小呆開始研究集合論了,他提出了關(guān)于一個(gè)數(shù)集四個(gè)問題:1.子集的異或和的算術(shù)和。2.子集的異或和的異或和。3.子集的算術(shù)和的算術(shù)和。4.子集的算術(shù)和的異或和。 目前為止,小呆已經(jīng)解決了前三個(gè)問題,還剩下最后一個(gè)問題還沒有解決,他決定把這個(gè)問題交給你,未來的集訓(xùn)隊(duì)隊(duì)員來實(shí)現(xiàn)。
第一行,一個(gè)整數(shù)n。第二行,n個(gè)正整數(shù),表示01,a2….,。
一行,包含一個(gè)整數(shù),表示所有子集和的異或和。
【樣例解釋】 6=1 異或 3 異或 (1+3)【數(shù)據(jù)規(guī)模與約定】ai >0,1<n<1000,∑ai≤2000000。另外,不保證集合中的數(shù)滿足互異性,即有可能出現(xiàn)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);}
新聞熱點(diǎn)
疑難解答