洛谷P1469 找筷子
题目链接:P1469 找筷子 - 洛谷 | 计算机科学教育新生态
题目难度:普及—
解题思路: 本题我们考虑异或的两个性质:
- k个相同的数异或当k为奇数时候结果为本身,否则为0;
- 0与任何数异或为该数。
注意到上面的题目,求筷子中落单的筷子的长度,根据性质1成双的筷子异或结果为0,如果存在落单的筷子最后肯定是0与该筷子异或得到了该筷子长度。
最后上代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e7 + 10;
int n,x,ans;
int read()
{
int s = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
s = s * 10 + ch - '0';
ch = getchar();
}
return s * f;
}
int main()
{
n = read();
for(int i = 1; i <= n; i++)
{
x = read();
ans ^= x;
}
cout << ans;
return 0;
}