记录编号 31801 评测结果 AAAAAAAAAA
题目名称 IP网络管理员 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2011-11-03 22:03:00 内存使用 0.38 MiB
显示代码纯文本
#include <cstdio>
using namespace std;

int inf[1000][32]={0};

int powint(int num,int level)
{
	int temp=1;
	while (level)
	{
		temp=temp*num;
		level--;
	}
	return(temp);
}

int main(void)
{
	freopen("networkip.in","r",stdin);
	freopen("networkip.out","w",stdout);
	int i,j,maxj,m,num,a[4];
	bool able=true;
	scanf("%d\n",&m);
	for (i=0;i<m;i++)
	{
		scanf("%d.%d.%d.%d\n",&a[0],&a[1],&a[2],&a[3]);
		for (j=0;j<4;j++)
		{
			num=0;
			while (a[j])
			{
				inf[i][(24-j*8)+num]=a[j]%2;
				a[j]/=2;
				num++;
			}
		}
	}
	for (j=0;able&&j<32;j++)
		for (i=1;able&&i<m;i++)
			if (inf[0][31-j]!=inf[i][31-j])
				able=false;
	if (j!=32)
		j--;
	maxj=j;
	num=0;
	for (i=7,j=0;j<maxj;i--,j++)
	{
		a[num]+=powint(2,i)*inf[0][31-j];
		if (i==0)
		{
			i=8;
			num++;
		}
	}
	printf("%d.%d.%d.%d\n",a[0],a[1],a[2],a[3]);
	for (i=0;i<4;i++)
		a[i]=0;
	num=0;
	for (i=7,j=0;j<maxj;i--,j++)
	{
		a[num]+=powint(2,i);
		if (i==0)
		{
			i=8;
			num++;
		}
	}
	printf("%d.%d.%d.%d\n",a[0],a[1],a[2],a[3]);
	fclose(stdin);
	fclose(stdout);
	return(0);
}