题目

{% fold 点击显/隐题目 %}

给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。你现在需要求出那个出现了奇数次的数。 对于100%的数据,1≤n≤500000,n肯定是奇数。所有出现的数都不超过10000。
输入共两行,第一行包含一个整数n,表示给出的正整数个数。 第二行有n个正整数,每两个正整数之间用一个空格隔开,表示给出的正整数。
输出共一行,包含一个整数,表示奇数次的那个数。
9 3 1 2 2 17 1 3 17 3
3
{% endfold %}

题解

根据 a^a^b = b 的原理
将所有数求一遍异或即可

代码

{% fold 点击显/隐代码 %}```cpp 奇数统计 https://github.com/OhYee/sourcecode/tree/master/ACM 代码备份
#include

int read_int() {
char c;
int ans = 0;
while(c = getchar(),!(c >= '0'&&c <= '9'));
while(c >= '0'&&c <= '9') {
ans *= 10;
ans += (int)c - '0';
c = getchar();
}
return ans;
}

int main(){
int n=read_int();
int ans = 0;
while(n--){
ans ^= read_int();
}
printf("%d\n",ans);
return 0;
}

{% endfold %}