ps:真是日了狗...英语渣渣理解题目不行,开了个100W数组来算,还优化了下时间,还是超时了,看了题解才知道用异或。
N个数异或,会得出其中是奇数的一个.比如 1^1^3^2^2 = 3. 1^3^1 = 3
先贴上那个开100W数组的题的代码:
#include "stdio.h" #include "string.h" int T; int a[1000100]; int flag[1000100]; int main(){ int i,j,num; while(~scanf("%d",&T) && T ){ for(i=0;i<T;i++){ scanf("%d",&a[i]); flag[i]=1; } for(i=0;i<T;i++){ if(flag[i]==0) continue; for(j=0;j<T;j++){ if(i==j) continue; if(a[i]==a[j]){ flag[i]=0; flag[j]=0; } } } for(i=0;i<T;i++){ if(flag[i]==1){ num=i; break; } } printf("%d\n",a[num]); } return 0; }
然而并不能AC。。。。。。。。
接下来用异或做的能AC。。
代码:
#include "stdio.h" #include "string.h" int main(){ int T,i,k,a; while(~scanf("%d",&T) && T){ for(i=0;i<T;i++){ scanf("%d",&a); if(i==0){ k=a; continue; } k=k^a; } printf("%d\n",k); } return 0; }
时间: 2024-10-22 14:14:08