首页 > 代码库 > UVA1590(IP网络)
UVA1590(IP网络)
被数据结构弄的怀疑人生了...做个水题找一下自信!
之前培训过一点网络的基础,所以这个题比较容易。直接上代码。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <ctype.h> 5 #include <math.h> 6 7 void change(int ip[1005][32],int p,int q,int n,int j) 8 { 9 int t = 0,i; 10 int a[8]; 11 memset(a,0,sizeof(a)); 12 while(n) 13 { 14 int x = n%2; 15 a[t++] = x; 16 n/=2; 17 } 18 for(i=p; i<q; i++) 19 ip[j][i] = a[7-i+p]; 20 } 21 int main() 22 { 23 int ip[1005][32]; 24 int a,b,c,d,i,j,k,t; 25 char s[50]; 26 while(scanf("%d",&t)!=EOF) 27 { 28 memset(ip,0,sizeof(ip)); 29 getchar(); 30 for(i=0; i<t; i++) 31 { 32 gets(s); 33 if(sscanf(s,"%d.%d.%d.%d",&a,&b,&c,&d)==4) 34 { 35 change(ip,0,8,a,i); 36 change(ip,8,16,b,i); 37 change(ip,16,24,c,i); 38 change(ip,24,32,d,i); 39 } 40 } 41 int x = 32; 42 for(j=0; j<32; j++) 43 { 44 int flag = 1; 45 for(i=1; i<t; i++) 46 { 47 if(ip[i][j]!=ip[i-1][j]) 48 { 49 flag = 0; 50 break; 51 } 52 } 53 if(!flag) 54 { 55 x=j; 56 break; 57 } 58 } 59 int q=0,w=0,e=0,r=0; 60 int q1=0,w1=0,e1=0,r1=0; 61 for(i=0; i<x; i++) 62 { 63 if(i<8) 64 { 65 q+=ip[0][i]*(int)pow(2,7-i); 66 q1 += (int)pow(2,7-i); 67 } 68 else if(i>=8&&i<16) 69 { 70 w+=ip[0][i]*(int)pow(2,15-i); 71 w1 += (int)pow(2,15-i); 72 } 73 else if(i>=16&&i<24) 74 { 75 e+=ip[0][i]*(int)pow(2,23-i); 76 e1 += (int)pow(2,23-i); 77 } 78 else 79 { 80 r+=ip[0][i]*(int)pow(2,31-i); 81 r1 += (int)pow(2,31-i); 82 } 83 } 84 printf("%d.%d.%d.%d\n",q,w,e,r); 85 printf("%d.%d.%d.%d\n",q1,w1,e1,r1); 86 87 } 88 return 0; 89 }
UVA1590(IP网络)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。