1 #include <stdio.h> 2 int main() 3 { 4 int n,x,ans; 5 while(scanf("%d",&n)!=EOF) 6 { 7 ans = 0; 8 while(n--) 9 { 10 scanf("%d",&x); 11 ans ^= x; 12 } 13 printf("%d ",ans); 14 } 15 return 0; 16 }
我们先了解一下位异或的运算法则吧:
1、a^b = b^a。
2、(a^b)^c = a^(b^c)。
3、a^b^a = b。
对于一个任意一个数n,它有几个特殊的性质:
1、0^n = n。
2、n^n = 0。
所以可以通过每次异或运算,最后剩下的值就是出现奇数次的那个数字。