1590 - IP Networks
2015-10-24 20:17
447 查看
巩固了下“局部变量传参给函数并要在函数中修改其值并返回调用处使用修改的值 需传指针”
View Code
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cstdlib> #include<cmath> #include<cctype> #include<vector> #include<queue> #include<map> #include<set> #define eps 10e-6 using namespace std; typedef long long ll; int ip[1005][35]; void solve(int t,int *sum,int id) { int tmp[10],p = 0,w = t; while(t>0) { tmp[p++] = t%2; t/=2; } while(p<8) tmp[p++] = 0; for(int i=7;i>=0;i--) ip[id][(*sum)++] = tmp[i]; } int cal(int st,int len) { int ret = 0; for(int i=st;i<st+8;i++) { if(i<len) ret = ret*2+ip[0][i]; else ret = ret*2; } return ret; } int calb(int st,int len) { int ret = 0; for(int i=st;i<st+8;i++) { if(i<len) ret = ret*2+1; else ret = ret*2; } return ret; } int main() { int n; while(~scanf("%d",&n)) { int x[4]; for(int i=0;i<n;i++) { scanf("%d.%d.%d.%d",&x[0],&x[1],&x[2],&x[3]); int cnt = 0; for(int j=0;j<4;j++) solve(x[j],&cnt,i); } int len = 32; for(int i=1;i<n;i++) { int s = 0; for(int j=0;j<32;j++) { if(ip[i][j]==ip[0][j]) s++; else break; } len = min(len,s); } for(int i=0;i<24;i+=8) printf("%d.",cal(i,len)); printf("%d\n",cal(24,len)); for(int i=0;i<24;i+=8) printf("%d.",calb(i,len)); printf("%d\n",calb(24,len)); } return 0; }
View Code
相关文章推荐
- #include指令
- Cocos2d-JS屏幕适配
- PhoneGap小窥(1)
- 安卓编程问题及解决方法汇总
- BZOJ1021-1030
- 【设计模式】合成复用原则
- php数据库编程:mysql扩展库操作数据库。
- Android四大图片缓存框架之-Fresco之initialize(二)
- 喷水装置-1
- 利用 GregorianCalendar 制作当前月的月历
- Leetcode -- Longest Valid Parentheses
- Light OJ 1148
- (这是水题)pat-1013
- 不是每次做坏事都会被发现之——嵌入式编程中的内存管理
- Raspberry Pi 初始化
- kettle6.0linux安装配置
- pentaho bi server5.4MySQL部署
- C#中部分方法使用的一个细节
- 2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest I题:Illegal or Not? [暴力题]
- window7下用wubi安装ubuntu