题意
给定数字 (a), (b),求((aigoplus x) + (b igoplus x))的最小值,其中x为任意整数
思路
把(a),(b)进行二进制分解,考虑 (a),(b) 的每一位,若都为0,则(x)这一位为0时最佳;若一个为0,另一个为1,则(x)这一位为1或0对答案都没有影响;若都为1,则(x)这一位为1最佳
发现什么没有,我们这样的话实际上就是让(aigoplus b)了,也即(min(aigoplus x + b igoplus x)= aigoplus b)
于是问题就这样解决了
题外话
这是我打的第一场 cf 呢,虽然是div2,充分感受到 cf 偏向思维的风格,总之挺妙的
代码
#include<bits/stdc++.h>
using namespace std;
int T,a,b;
int main(){
scanf("%d",&T);
for(int i=1;i<=T;i++){
scanf("%d%d",&a,&b);
printf("%d
",a^b);
}
return 0;
}