原题传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2095
题目大意就是找出所有数字中只出现过一次的那个数 题目保证除了这个数外 其他所有的数都会出现偶数次
简单粗暴的方法是用容器 如果这个数在容器内 就删除 不在容器内 就加入容器
另一种神奇的方法就是用位异或 也就是 ^ 这个运算符
位异或有一些简单的性质
比如
0^n=n
n^n=0
m^n^m=n
这道题用到的是第三个性质
将所有数进行位异或 最后得到的就是答案了
直接贴代码
#include <stdio.h>
int main()
{
int n,i,a;
while(scanf("%d",&n)!=EOF && n)
{
a = 0;
while(n--)
{
scanf("%d",&i);
a ^= i;
}
printf("%d\n",a);
}
return 0;
}