很有趣的一道题,出乎意料的答案
给出n个数,数的范围为[1,LONG_MAX],保证其中某个数出现了奇数次,其他数都出现偶数次,编程把这个数找出来比如给出7个数,1,3,2,3,1,2,3 3出现了3次,1,2都出现2次,这样答案就是3
当然,程序运算速度越快越好,能保证n达到100W时能在1s内算出来
程序代码:#include <stdio.h>
#define Nmax 1000000
int n,ans,ans1,ans2,a[Nmax],i,p;
int main()
{
scanf("%d",&n);
for (i=0; i<n; i++) scanf("%d",&a[i]);
ans=0; for (i=0; i<n; i++) ans^=a[i];
p=1<<30; while ((p&ans)==0) p>>=1;
ans1=0; ans2=0;
for (i=0; i<n; i++)
if (a[i]&p) ans1^=a[i]; else ans2^=a[i];
printf("%d %d\n",ans1,ans2);
system("pause");
}