#include<bits/stdc++.h>
using namespace std;
int a[49];
int b[49];
int ans[49];
int cnt1=0,cnt2=0;
int main() {
int t; cin >> t;
while (t--) {
cnt1=0;
cnt2=0;
int n, m; cin >> n >> m;
m++;
for(int i=0;i<=32;i++) ans[i]=0,a[i]=0,b[i]=0;
long long res=0;
while(n){//将n和m分别转化为为二进制保存
a[cnt1]=n%2;
cnt1++;
n/=2;
}
while(m){
b[cnt2]=m%2;
cnt2++;
m/=2;
}
for(int i=31;i>=0;i--){//贪心
if(a[i]==b[i]){
ans[i]=0;
continue;
}
if(a[i]!=b[i]){
if(a[i]) break;
else ans[i]=1;
}
}
for(int i=31;i>=0;i--){
long long temp=ans[i]*pow(2,i);//计算答案
res+=temp;
}
cout<<res<<endl;
}
return 0;
}
Codeforces Round #735 (Div. 2) C. Mikasa
最新推荐文章于 2022-03-13 19:49:09 发布