#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=120; long long X,K; long long basex[maxn]; long long basek[maxn]; int totx,totk; int main() { int T; scanf("%d",&T); while(T--) { scanf("%lld%lld",&X,&K); totx=totk=0; memset(basex,0,sizeof basex); memset(basek,0,sizeof basek); while(X) { basex[totx++]=X%2; X=X/2; } while(K) { basek[totk++]=K%2; K=K/2; } int now=0; for(int i=0;i<totk;i++) { for(int j=now;;j++) { if(basex[j]==0) { basex[j]=basek[i]; now=j+1; break; } else { basex[j]=0; now=j+1; } } } for(int i=now;i<=100;i++) if(basex[i]==1) basex[i]=0; long long ans=0; for(int i=0;i<=100;i++) ans=ans+(long long)(basex[i]*pow(2.0,i)); printf("%lld\n",ans); } return 0; }
时间: 2024-12-24 12:39:03