输入一个长度为n的数组,考虑所有不同的数字,有且只有一个数字出现了奇数次。
比如对于1 2 3 1 2 3 1,我们考虑所有不同的数字1 2 3,有且只有1出现了奇数次(3次)
输出这个出现了奇数次的数字。
1 <= n <= 100000
1 <= a[i] <= 10^9
Input
第一行一个整数n, 接下来一行n个整数,表示输入的数字。
Output
一行一个数字,表示出现了奇数次的数字。
Sample Input
7 1 2 3 1 2 3 1
Sample Output
1
将数组从第一项开始一次向后作异或和,最后结果为唯一出现奇数次的数
#include<bits/stdc++.h>
using namespace std;
long long a[100005];
int main()
{
long long n,i,m;
cin >>n;
cin >>m;
for(i=1;i<=n-1;i++)
{
cin >> a[i];
m=m^a[i];
}
cout << m << endl;
return 0;
}
//异或符号 数学: Xor C语言:^ 性质 a ^ a = 0
//出现偶数次的数异或和一定为0
//出现奇数次的数异或和为这个数本身