AOJ 884.奇数统计

138


题目



点击显/隐题目

给出N个正整数,其中只有一个数出现了奇数次,其余的数都出现偶数次。你现在需要求出那个出现了奇数次的数。
对于100%的数据,1≤n≤500000,n肯定是奇数。所有出现的数都不超过10000。


输入共两行,第一行包含一个整数n,表示给出的正整数个数。
第二行有n个正整数,每两个正整数之间用一个空格隔开,表示给出的正整数。


输出共一行,包含一个整数,表示奇数次的那个数。


9
3 1 2 2 17 1 3 17 3


3




题解



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

代码


点击显/隐代码
#include <cstdio>

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;
}
发布评论
  • 点击查看/关闭被识别为广告的评论