您的位置:首页 > 其它

joj 2653 不同的数 从2*n中找出不相同的两个数

2011-08-25 20:58 309 查看
2653: 不同的数

ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE

3s65536K38778Standard
原来有n对数字,每对两个数字都相同。现在其中某对数字中的一个发生了变化。并且所有数字被打乱了顺序。求这一对数字变化后是多少。要求先输出小的。再输出大的。

Input

多组输入,每组如下:第一行一个数字n, n <= 1000000 以下2n行,每行一个数字,打乱顺序后的所有数字。 n=0表示输入结束。

Output

每组一行。两个数字。表示发生变化后的一组。

Sample Input

3
1
2
3
2
2
3
0

Sample Output

1 2


//

#include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

int n;

int sum0[33],sum1[33];

int main()

{

while(scanf("%d",&n)==1&&n)

{

n<<=1;

memset(sum0,0,sizeof(sum0));

memset(sum1,0,sizeof(sum1));

for(int i=0;i<n;i++)

{

int t;scanf("%d",&t);//t>0

for(int j=0;j<32;j++)

{

if(t&(1<<j)) sum1[j]^=t;

else sum0[j]^=t;

}

}

for(int i=0;i<32;i++)

{

if(sum0[i]&&sum1[i])

{

int rmax=max(sum0[i],sum1[i]);

int rmin=min(sum0[i],sum1[i]);

printf("%d %d\n",rmin,rmax);

break;

}

}

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐