题目描述:
如果一个数组中一定有两个数出现了奇数次,其他均出现偶数次,输出这两个数
#includeusing namespace std; typedef long long ll; int main() { int a[100]; for (int i = 1; i <= 100; i++) cin >> a[i]; //假设这两个数为a,b int eor = 0; for (int i = 0; i <= 100; i++) eor ^= a[i]; //异或完之后eor=a^b;因为ab不相等,所以异或完之后一定有一位上是1 int right_one = eor & (~eor + 1); //提取出最右边的1 int onlyone = 0; for (int i = 1; i <= 100; i++) { if ((a[i] & right_one) != 0) onlyone ^= a[i]; } int ans2 = eor ^ onlyone; cout << onlyone << ' ' << ans2; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)