⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poj2799.cpp

📁 本人最近在acm.pku.edu.cn上通过的程序
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int pow[8]={1,2,4,8,16,32,64,128};
int num[1000][4],ip[1000][32], minip[32],mip[4],h[32],inum[4];
char ips[40];
int n,i,j,k,ptr,tp,flag,a;

int main () 
{
		scanf("%d", &n);
        for(i=0;i<n;i++){
            scanf("%s",ips);
            tp=strlen(ips);
            ips[tp+1]=0; ips[tp]='.';
            tp=0; ptr=0;
            for(j=0;j<strlen(ips);j++)
                if(ips[j]!='.'){
                    tp*=10; tp+=ips[j]-'0'; 
                }
                else{
                    num[i][ptr++]=tp;
                    tp=0;                
                }    
            for(j=3;j>=0;j--)       
                for(k=(j+1)*8-1;k>=j*8;k--){
                    if(num[i][j]%2==0) ip[i][k]=0;
                        else ip[i][k]=1;
                    num[i][j]/=2;
                }

        }   
        i=0;
        while(i<32){
            flag=1; a=ip[0][i];
            for(j=1;j<n;j++)   
                if(ip[j][i]!=a){ 
                    flag=0; break; 
                }
            if(flag==1) i++; else break;
        }
		//puts("!!");
        for(j=0;j<i;j++){
            minip[j]=ip[0][j]; ips[j]=1;
        }
        //printf("%d!!", i);
        for(j=i;j<32;j++){
		//	printf("%d\n", j);
            minip[j]=0; ips[j]=0;
        }
        //puts("!!");
        for(i=0;i<4;i++){
            mip[i]=0; inum[i]=0;
            for(j=0;j<8;j++){
                if(minip[i*8+j]==1) mip[i]+=pow[7-j];
                if(ips[i*8+j]==1) inum[i]+=pow[7-j];
            }
        }
        printf("%d.%d.%d.%d\n",mip[0],mip[1],mip[2],mip[3]);
        printf("%d.%d.%d.%d\n",inum[0],inum[1],inum[2],inum[3]);
        //system("pause");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -