参考文献
https://zhuanlan.zhihu.com/p/139074556
C++ 代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#define Debug(in) cout<<#in<<"="<<(in)<<endl
#define mm(a,x) memset(a,x,sizeof(a))
#define mkp(a,b) make_pair(a,b)
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define sync std::ios::sync_with_stdio(false);std::cin.tie(0)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f,mod=1e9+7;
int n,m;
vector<ll>b;
inline void ins(ll x)
{
for(ll v:b) x=min(x,v^x);
for(ll &v:b) v=min(v,v^x);
if(x) b.push_back(x);
}
ll qry(ll k)
{
ll res=0;
if(sz(b)<n) --k;
for(ll x:b)
{
if(k&1) res^=x;
k>>=1;
}
if(k) return -1;
else return res;
}
int main(void)
{
sync;
int _;
cin>>_;
for(int cs=1;cs<=_;++cs)
{
b.clear();
cout<<"Case #"<<cs<<":"<<endl;
cin>>n;
ll x;
for(int i=0;i<n;++i)
{
cin>>x;
ins(x);
}
sort(all(b));
cin>>m;
while(m--)
{
cin>>x;
cout<<qry(x)<<endl;
}
}
return 0;
}
//考虑边界!!!
//Think TWICE, Code ONCE!
大佬写题都这么独特,orz
# %%%