1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include<string.h> int ip[1005][4]; char str1[4][9],str2[4][9],mask[4][9];
void (int i){ int flag=0; for(int j=0;j<4;j++){ int k=8,temp=ip[i][j]; while(k--){ str2[j][k]=temp%2; temp=temp>>1; } } for(int j=0;j<4;j++){ for(int k=0;k<8;k++){ if(!flag) if(str2[j][k]!=str1[j][k]){ flag=1; } if(flag){ if(i)str1[j][k]=mask[j][k]=0; else str1[j][k]=str2[j][k]; } } } }
int main(){ int m; while(scanf("%d",&m)!=EOF){ for(int i=0;i<m;i++){ for(int j=0;j<4;j++){ scanf("%d",&ip[i][j]); getchar(); } } for(int i=0;i<4;i++){ for(int j=0;j<8;j++){ str1[i][j]=mask[i][j]=1; } } for(int i=0;i<m;i++){ minAdr(i); } for(int j=0;j<4;j++){ ip[0][j]=ip[1][j]=0; for(int k=0;k<8;k++){ ip[0][j]+=(str1[j][k]<<(7-k)); ip[1][j]+=(mask[j][k]<<(7-k)); } } for(int i=0;i<2;i++)printf("%d.%d.%d.%dn",ip[i][0],ip[i][1],ip[i][2],ip[i][3]); } return 0; }
|
近期评论