传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3687
和只有0..2000000中可能
压位记录
Code:
#include<bits/stdc++.h>
using namespace std;
bitset<2000001>bt;
int main(){
int ans=0,n,x,sum=0;scanf("%d",&n);
bt[0]=1;
for(int i=1;i<=n;i++){
scanf("%d",&x);sum+=x;
bt=bt^(bt<<x);
}for(int i=1;i<=sum;i++)ans^=bt[i]?i:0;
cout<<ans<<endl;
}