题目1351:数组中只出现一次的数字
#include<stdio.h>
#include<stdlib.h>
int a[1000001];
int b[500001];
int c[500001];
int n;
int main(int argc, char *argv[])
{
while(~scanf("%d",&n))
{
for(int i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
int tmp=a[0];
for(int i=1;i<n;++i)
{
tmp^=a[i];
}
int x=tmp&(-tmp);
int j,k;
int i;
for(i=0,j=0,k=0;i<n;++i)
{
if((a[i]|x)==a[i])
{
b[j++]=a[i];
}
else
{
c[k++]=a[i];
}
}
int bx=b[0];
int cx=c[0];
for(int i=1;i<j;++i){
bx^=b[i];
}
for(int i=1;i<k;++i)
{
cx^=c[i];
}
if(bx>cx)
{
printf("%d %d\n",cx,bx);
}
else
printf("%d %d\n",bx,cx);
}
return 0;
}