题解:
异或:二进制比特位相同则0, 不同则1.
两个相同的数字异或得到的是0, 基于这个思路,这道题对数组中的所有数据进行逐一异或就可以解决得到奇数次的数字,因为偶数次的数字都被异或成为0了,最后单独保留了奇数次的数字。
假设输入:a b c d e d c b a
计算: a^b^c^d^e^d^c^b^a=a^a^b^b^c^c^d^d^e
=0^0^0^0^e
=e
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int temp = 0;
int sum = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &temp);
sum ^= temp;
}
printf("%d",sum);
}
return 0;
}