题目
{% fold 点击显/隐题目 %}
给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。你现在需要求出那个出现了奇数次的数。
对于100%的数据,1≤n≤500000,n肯定是奇数。所有出现的数都不超过10000。
输入共两行,第一行包含一个整数n,表示给出的正整数个数。
第二行有n个正整数,每两个正整数之间用一个空格隔开,表示给出的正整数。
输出共一行,包含一个整数,表示奇数次的那个数。
9
3 1 2 2 17 1 3 17 3
3
题解
根据 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 %}