UVa 1590 IP Networks
2016-04-16 20:18
393 查看
所有数转化为二进制放到数组里再一位一位比较,第一位出现不同位数后都为0
#include <iostream> #include <cstring> #include <stack> #include <algorithm> #include <cstdio> using namespace std; #define maxn 1005 int k; void ToB(int n,char *A) { stack<int> S; int cnt=0; while(n) { S.push(n%2); n/=2; cnt++; } while(cnt++<8) S.push(0); int p=0; while(!S.empty()) A[p++]=S.top()+'0',S.pop(); A[p++]='\0'; } int ToT(char *A,int j) { int n=0; for(int i=j;i<j+8;i++) n=(n*2+(A[i]-'0')); return n; } int GetN(char A[][100]) { for(int i=0;i<strlen(A[0]);i++) { char ch=A[0][i]; for(int j=1;j<k;j++) { if(A[j][i]!=ch) return i; } } return 33; } int main() { while(scanf("%d",&k)!=EOF) { char ip[maxn][100]={0}; char ipm[32]; for(int i=0;i<32;i++) ipm[i]='1'; for(int i=0;i<k;i++) { for(int j=0;j<4;j++) { int a; scanf("%d%*c",&a); ToB(a,ip[i]+strlen(ip[i])); } } int n=GetN(ip); for(int i=n;i<32;i++) ip[0][i]=ipm[i]='0'; for(int i=0;i<4;i++) { if(i) putchar('.'); printf("%d",ToT(ip[0],i*8)); } putchar('\n'); for(int i=0;i<4;i++) { if(i) putchar('.'); printf("%d",ToT(ipm,i*8)); } putchar('\n'); } return 0; }
相关文章推荐
- Web工程目录和tomcat目录
- ajaxSubmit() 上传文件和进度条显示
- C++之类的六个默认成员函数
- 快速幂 快速乘法
- oil deposits——广搜
- acm 算法竞赛 时间
- 配置nodejs环境
- poj 1236
- javascript getElementById 使用方法及用法
- SQL Server 存储过程
- Delegate in UnrealEngine ——虚幻四中的委托
- 20145238-荆玉茗 《Java程序设计》第2次实验
- 匿名方法
- 第7周学习进度
- 全排列算法
- js查看一个函数的执行所用时间
- 安卓开发小知识 - 3
- 操作系统基础及多线程/进程同步
- Android AudioTrack
- 异常org.hibernate.HibernateException: The database returned no natively generated identity解决方案