P1469 找筷子
程序员文章站
2022-05-12 23:32:15
...
这道题一眼看上去很简单,但是看到空间限制为 444 Mb的时候,就不能用普通的方法来解决了。就算你开一个10710^7107的数组你就MLE了。
但是考虑到异或的性质:异或满足交换律和结合律,而且相同两个数异或起来就是000,000异或任何一个数都是这个数,所以如果我们把所有的数都异或起来,那么如果长度为aaa的筷子是成双的,那么两个aaa异或就是000,那么最后的结果就是落单的筷子的长度
#include<bits/stdc++.h>
using namespace std;
int ans,n,a;
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
{
scanf("%d",&a);
ans^=a;
}
printf("%d",ans);
return 0;
}