#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=1e5+7,maxd=20+7,mod=1e9+7;
int T,ch[maxn*32][2],n,m,sz;
ll a;
void insert(ll x){
int u=0;
for (int c,i=31;i>=0;i--){
c=((x&(1L<<i))?1:0);
if (!ch[u][c]) {
ch[sz][0]=ch[sz][1]=0;ch[u][c]=sz++;
}
u=ch[u][c];
}
}
ll query(ll x){
ll sum=0;
int u=0;
for (int c,i=31;i>=0;i--)
{
c=((x&(1L<<i))?1:0);
if (ch[u][!c]){sum|=((!c)?(1L<<i):0);u=ch[u][!c];}
else {sum|=(c?(1L<<i):0);u=ch[u][c];}
}
return sum;
}
int main(){
int _;
scanf("%d",&_);
for (int i=1;i<=_;i++){
scanf("%d%d",&n,&m);
ch[0][0]=ch[1][0]=0;
sz=1;
while (n--)
{
scanf("%lld",&a);insert(a);
}
printf("Case #%d:\n",i);
while (m--)
{
scanf("%lld",&a);printf("%lld\n",query(a));
}
}
return 0;
}
```
hdu4825Xor
最新推荐文章于 2020-01-21 12:26:00 发布