IP地址合法性(模拟逻辑运算)
来源:互联网 发布:star法则 程序员 编辑:程序博客网 时间:2024/06/08 10:01
Problem Link:http://139.129.36.234/problem.php?id=1231
1231: IP地址合法性
时间限制: 1 Sec 内存限制: 128 MB提交: 4 解决: 3
[提交][状态][讨论版]
题目描述
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。点分十进制IP是由是4个0~255的数字中间加点构成,如192.168.1.123。我们可以通过子网掩码得到IP的网络号和主机号,其方法是与IP和对应二进制做位与运算。由于主机号全0和全1被用作特殊用途,不能分配给网络中的主机。给定一组IP和其子网掩码,判断是否可以分配给该网络中的主机。
输入
输入多组数据,每组包含两行,第一行为IP地址,有4个0~999的数字组成,中间用点号分割。第二行为子网掩码,由4个0~255数字组成,中间用点号分割。子网掩码保证合法。
输出
对于每组输入数据,判断是否合法,如果合法就输出Yes否则输出No
样例输入
192.168.1.3255.255.255.0103.139.56.255255.255.255.0100.256.1.3255.255.0.0
样例输出
YesNoNo
提示
来源
2016华中科技大学计算机复试
AC code:
#include<iostream>#include<algorithm>#include<stdio.h>#include<map>#include<math.h>#include<string.h>#include<queue>#include<vector>#include<set>#define LL long long#define exp 1e-9#define MAXN 1000010using namespace std;int ip[5],mark[5],c[5];void judge(){int i,j,cnt,m,tmp,hou,fg;for(i=1;i<=4;i++){if(ip[i]<0 || ip[i]>255){printf("No\n");return;}}i=1;cnt=0;while(mark[i]==255){cnt++;c[i]=ip[i];i++;}cnt++;//printf("cnt=%d\n",cnt);c[cnt]= ip[cnt] & mark[cnt];m=0;tmp=c[cnt];while(tmp && (tmp & 1) == 0){m++;tmp>>=1;}if(m==0){fg=0;for(i=4;i>=cnt;i--){if(ip[i]!=0){fg=1;break;}}if(fg==0){printf("No\n");return;}fg=1;for(i=4;i>=cnt;i--){if(ip[i]!=255){fg=0;break;}}if(fg==1){printf("No\n");return;}printf("Yes\n");return;}fg=0;for(i=4;i>cnt;i--){if(ip[i]!=0){fg=1;break;}}if(fg==0){i=0;tmp=ip[cnt];while(1){if((tmp & 1)==0){i++;tmp>>=1;if(i==m){printf("No\n");return;}}else{break;}}}fg=1;for(i=4;i>cnt;i--){if(ip[i]==0){fg=0;break;}}if(fg==1){i=0;tmp=ip[cnt];while(1){if((tmp & 1)==1){i++;tmp>>=1;if(i==m){printf("No\n");return;}}else{break;}}}printf("Yes\n");}int main(){//freopen("D:\\in.txt","r",stdin); while(scanf("%d.%d.%d.%d",&ip[1],&ip[2],&ip[3],&ip[4])!=EOF) { scanf("%d.%d.%d.%d",&mark[1],&mark[2],&mark[3],&mark[4]); judge();}return 0;}
1 0
- IP地址合法性(模拟逻辑运算)
- IP地址合法性检查
- IP地址合法性检测 VBScript
- Java判断IP地址合法性
- [javascript]判断ip地址合法性
- 判断IP地址的合法性
- 判断IP地址的合法性
- shell校验IP地址合法性
- IP地址(简单模拟)
- IP地址的合法性验证 程序
- javascript 正则表达式判断IP地址合法性
- C 判断IP地址的合法性
- Delphi检查IP地址的合法性
- python怎么判断IP地址的合法性
- 正则表达式检查IP地址合法性
- 正则表达式验证IP地址合法性
- 判断IP地址的合法性(Java)
- Python IP地址合法性的校验
- 极客学院:iOS安全攻防
- ubuntu16.04进入命令行
- 搜索引擎原理篇
- 2017成白电突破攻坚年,全方位备战成为重要竞争策略
- lazy ideas in programming
- IP地址合法性(模拟逻辑运算)
- Android开发之Fragment的使用
- 几个常用的Swift Extension:防止按钮重复点击、增加友盟页面统计、Dispatch_once Swift实现
- word2vec
- python安装pycrypto 模块提'configure:2724: error: C compiler cannot create executables'
- iOS之Sqlite3封装
- EditText一些属性
- 栈-匹配
- 服务端测试之接口测试工具——postman