1. 程式人生 > >UVA 1590

UVA 1590

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void* a, const void *b)
{
    return *(int *)a - *(int *)b;
}
int ip[2000][2000] = { 0}, IP[4],A[4];
int ta[9] = {255, 254, 252, 248, 240, 224, 192, 128, 0};
int main()
{

    int n;

    while(scanf("%d", &n)!=EOF)
    {
        int
i ; for(i = 0; i < n; i++) scanf("%d.%d.%d.%d", &ip[0][i],&ip[1][i], &ip[2][i],&ip[3][i]); for(i = 0; i < 4; i++) { qsort(ip[i],n,sizeof(ip[i][0]),cmp); int w, q; w = ip[i][n - 1]; q = ip[i][0]; int
decide = 0,p = 0; int j; for(j = 1; j <= 8; j++) { if(q%2!=w%2) { p = j; } q /=2; w /=2; } A[i] = ta[p]; IP[i] = A[i] & ip[i][0
]; if(A[i]!=255) break; } for(i = i + 1; i < 4; i++) { A[i] = 0; IP[i] = 0; } printf("%d.%d.%d.%d\n",IP[0],IP[1],IP[2],IP[3]); printf("%d.%d.%d.%d\n",A[0],A[1],A[2],A[3]); memset(ip,0,sizeof(ip)); memset(IP,0,sizeof(IP)); memset(A,0,sizeof(A)); } return 0; }