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,最终剩下的结果就是出现了奇数次的那个数。
上一题
下一题