小呆開始研究集合論了,他提出了關于一個數集四個問題:1.子集的異或和的算術和。2.子集的異或和的異或和。3.子集的算術和的算術和。4.子集的算術和的異或和。 目前為止,小呆已經解決了前三個問題,還剩下最后一個問題還沒有解決,他決定把這個問題交給你,未來的集訓隊隊員來實現。
第一行,一個整數n。第二行,n個正整數,表示01,a2….,。
一行,包含一個整數,表示所有子集和的異或和。
【樣例解釋】 6=1 異或 3 異或 (1+3)【數據規模與約定】ai >0,1<n<1000,∑ai≤2000000。另外,不保證集合中的數滿足互異性,即有可能出現Ai= Aj且i不等于J
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<bitset>#define N 2000003using namespace std;int n,m;bitset<N> f;int main(){ scanf("%d",&n); f[0]=1; int sum=0; for (int i=1;i<=n;i++) { int x; scanf("%d",&x); sum+=x; f^=(f<<x); } int ans=0; for (int i=1;i<=sum;i++) if (f[i]) ans^=i; PRintf("%d/n",ans);}
新聞熱點
疑難解答