※P1469 找筷子
我们考虑异或的两个小小的性质:
- 任何数与 0 的异或值是它本身
- k 个相同的数的异或和,当 k 为奇数时,结果是这个数本身,否则结果是 0
- 异或满足交换律和结合律
题目需要求 n 个数中出现奇数次的那个数,且保证这个数存在且只有一个。于是我们根据上面两个性质得出,答案就是这 n 个数的异或和。
int n;
int main()
{
cin>>n;
int ans=0;
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
ans^=x;
}
cout<<ans<<endl;
//system("pause");
}