#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a, b, t;
int main() {
scanf("%d", &t);
while(t--) {
scanf("%d%d", &a, &b);
printf("%d\n", a ^ b);
}
}
这道题我们可以这么思考,把a和b转化为二进制,此时我们想要做的就是让a,b的和的每一位尽可能地而全都变为0。a和b的每一位大致有以下情况:
1.a的某位与b的对应位都为1,那么x在这一位取1就可以让这两位都为0了
2.a的某位与b的对应位都为0,那么x在这一位取0就可以让这两位都为0了
3.a的某位为1,但b的对应位为0,此时我们会发现无论x该位取0还是1,a和b必定有一位是1,另一位是0
4.a的某位为0,但b的对应位为1,该情况与3相同
通过上面的分析,我们就会发现当a,b对应位相同时,对应位可化为0;当a,b对应位不相同时,对应位必定为1,那这么一看不就是把a与b异或吗?这就很简单了,剩下处理输入输出就完事了。