题解 CF1421A 【XORwice】

题意

给定数字 (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;
}
原文地址:https://www.cnblogs.com/fpjo/p/13912046.html