1 条题解
-
0
#include <bits/stdc++.h> using namespace std; typedef long long LL; LL p[51],flg=0; void ins(LL x) { for(int i=50;i>=0;i--)if((x>>i)&1) { if(!p[i]){p[i]=x;return;} else x^=p[i]; } flg|=(x==0); } LL kth(LL x) { x-=flg; LL ans=0; for(int i=0;i<=50;i++)if(p[i]) { if(x&1)ans^=p[i]; x>>=1; } if(x)return -1; return ans; } int main() { int n;scanf("%d",&n); memset(p,0,sizeof(p)); for(int i=1;i<=n;i++) { LL x;scanf("%lld",&x); ins(x); } for(int i=0;i<=50;i++) for(int j=0;j<i;j++) if(p[i]&((LL)1<<j))p[i]^=p[j]; int m;scanf("%d",&m); while(m--) { LL x;scanf("%lld",&x); printf("%lld\n",kth(x)); } return 0; }
- 1
信息
- ID
- 522
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 60
- 已通过
- 27
- 上传者