题目:
现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。
输入描述:
第一行:一个整数n,表示序列的长度。第二行:n个正整数ai,两个数中间以空格隔开。
输出描述:
一个数,即在序列中唯一出现奇数次的数值。
输入:
5
2 1 2 3 1
输出:
3
解题思路:
我们首先了解一下异或的运算性质
- a ^ a = 0
- 0 ^ a = a
- x ^ x ^ x ^ y = x ^ y
假如我按照例题中输入2 1 2 3 1这五个数
实际上是2^2^1^1^3,结果直接为3了
代码:
#include<stdio.h>
int main()
{
long long n = 0;
scanf("%ld", &n);
long long x = 0;
long long max = 0;
while (~scanf("%ld", &x))
{
max ^= x;
}
printf("%ld\n", max);
return 0;
}