1003: FFF团的情侣活动--课程作业--找出N个数字中唯一出现奇数次的数
1003: FFF团的情侣活动
Time Limit: 1 Sec Memory Limit: 2 MBDescription
圣诞节快到了,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,所以不能开一个很大的数组来遍历,直接读入一个异或一次就好了;
1 #include <stdio.h> 2 3 int main() 4 { 5 int i, n; 6 int val = 0; 7 scanf("%d", &n); 8 int a; 9 for (i = 0; i < n; i++) { 10 scanf("%d", &a); 11 val ^= a; 12 } 13 14 printf("%d\n", val); 15 return 0; 16 }