find your present (2)

题意是找出一些数字(奇数个)中出现奇数次得数。看了题解一会才会的,此题涉及到异或,表示有点蒙。
1、一个数异或本身恒等于0,如5^5恒等于0;

2、一个数异或0恒等于本身,如5^0恒等于5。

3 满足交换律

822833885=5; 用来寻找一串数字中唯一odd次出现的数

所以显然用异或运算是很完美的解法
在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,ans,a;
    while(scanf("%d",&n)!=EOF){
        if(n==0)break;
        scanf("%d",&ans);
        for(int i=1;i<n;i++){
            scanf("%d",&a);
            ans^=a;
        }
        printf("%d\n",ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/84563103