测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A28820. 出现奇数次的数

填空题 中等

题目描述

出现奇数次的数

题目描述

奇数:指不能被 2整除的整数。

例如:3、5是奇数;4、6不是奇数。

给定 n个整数,其中只有一个数出现了奇数次,请找出这个数。

例如:77个整数为 6、2、4、6、4、2、6,其中只有6 出现了奇数次故输出6。

输入格式

第一行输入一个整数n(1≤n≤10^5)

第二行输入 n个整数(1≤整数≤10^9) 整数之间以一个空格隔开数据保证只有一个数出现了奇数次)

输出格式

输出一个整数,表示出现了奇数次的数

输入样例

7
6 2 4 6 4 2 6

输出样例

6

参考答案

#include <iostream> using namespacestd; int main() { int n; cin >> n; // 输入整数的个数n int result = 0; // 初始化结果为0 for (int i = 0; i < n; ++i) { int num; cin >> num; // 输入每个整数 result ^= num; // 对结果和每个输入的整数进行异或操作 } cout << result; // 输出异或结果即为出现奇数次的数 return0; // 程序正常退出 }

答案解析

要找到出现奇数次的数,我们可以使用异或运算(XOR)。

在 C++ 中,异或运算用符号 ^ 表示。异或运算具有以下性质:

任何数与自己异或的结果是 0(例如,a ^ a = 0)。

任何数与 0 异或还是其本身(例如,a ^ 0 = a)。

异或运算满足交换律和结合律。

由于只有一个数出现奇数次,其余的数都出现偶数次,当我们对数组中的所有数进行异或运算时,出现偶数次的数将两两抵消变为 0,最终剩下的结果就是出现了奇数次的那个数。

上一题 下一题