位异或

题目大意: 一共又奇数个数 其中有一个数只出现了一次 找到这个数然后输出
Sample Input
5
1 1 3 2 2
3
1 2 1
0
Sample Output
3
2

此题采用位异或
我们先了解一下位异或的运算法则吧:
1、a^b = b^a。
2、(ab)c = a(bc)。
3、aba = b。
对于一个任意一个数n,它有几个特殊的性质:
1、0^n = n。
2、n^n = 0。
所以可以通过每次异或运算,最后剩下的值就是出现奇数次的那个数字。

include <stdio.h>

int main()
{
int n,x,y;
while(scanf("%d",&n)&&n)
{
y=0;
while(n--)
{
scanf("%d",&x);
y=y^x;
}
printf("%d ",y);
}
return 0;
}

原文地址:https://www.cnblogs.com/tianming1/p/10102704.html