这道题 比赛签到题 正确性证明如下:
异或可以理解为不进位加法
而你分组后权值需要进行进位加法
所以显然把所有数字分到一组是最优的
依个数异或即可
下面贴代码(为什么这个东西还要代码啊
#include<bits/stdc++.h>
using namespace std;
signed main()
{
int n;
scanf("%d",&n);
int sum=0;
for(int i=1,t;i<=n;i++)
{
scanf("%d",&t);
sum^=t;
}
printf("%d\n",sum);
return 0;
}