实际上它是一个黑客问题,一个孤独的整数。我理解这里使用的XOR逻辑。我只是无法深入理解输入后如何处理每个数字的概念。我在代码中标记了这一行。请帮助我理解它。
#include <iostream>
using namespace std;
int main()
{
int n, a, c = 0, i;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> a;
c ^= a; // THIS LINE .... i WANT TO KNOW HOW IS THIS WORKING ?
// HOW IS COMPARISON BEING CARRIED OUT HERE ?
}
cout << a << endl;
return 0;
}
答案 0 :(得分:2)
程序找到孤独的数字,即不是成对的数字。将数字与自身进行异或会导致0
。使用这个概念,所有数字都是逐个异或的。对一对数字进行xored,然后在输入序列中使用另一个数字对结果进行xored,依此类推。最后,单个号码将被保留。
例如:
输入1 1 2 3 0 0 3
1 ^ 1 = 0
0 ^ 2 = 2
2 ^ 3 = 1
1 ^ 0 = 1
1 ^ 0 = 1
1 ^ 3 = 2
和2
很孤单。