1003: FFF团的情侣活动
Time Limit: 1 Sec Memory Limit: 2 MB
Description
圣诞节快到了,Water作为大FFF团团长,组织许多对情侣进行电影院隔位坐,双人套餐打十一折等积极向上的活动。
Water会给每个人编号,情侣两人的号码是一样的。丧心病狂却又单身的Water把自己也算了进去,最后却把自己的编号忘记了。
Water手上现在只有一份乱了的号码单(包括Water的号码),他又过来死皮赖脸的求你帮他把号码找出来。
Input
一组数据。
第一行为 整数N (0<N<=1000000)
接下来N行 每行为一个整数。
Output
一行,Water的号码。
Sample Input
5
3
2
4
2
3
Sample Output
4
HINT
Sample解释:由于情侣间的号码是一样的,所以孤独的4就是Water的号码了!注意,也有可能是如下情况:
3 2 2 2 3
由于2有三个,其中两个是一对情侣,剩下那个号码2就是Water的啦!
情侣的号码也可重复。
这里我们用到异或的一个性质:A xor A = 0,也就是说异或同一个数偶数次,结果不变。
这样我们只需要按顺序把所有的数依次异或一遍,剩下的就是唯一出现奇数次的那个数了。
然后,这里还要注意一下内存的问题,因为只有2m,所以不能开一个很大的数组来遍历,直接读入一个异或一次就好了;
#include <stdio.h> int main()
{
int i, n;
int val = ;
scanf("%d", &n);
int a;
for (i = ; i < n; i++) {
scanf("%d", &a);
val ^= a;
} printf("%d\n", val);
return ;
}