很有趣的一道题,出乎意料的答案
给出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"); }