Loading

题解 CF1421A 【XORwice】

题意

给定数字 \(a\), \(b\),求\((a\bigoplus x) + (b \bigoplus x)\)的最小值,其中x为任意整数

思路

\(a\),\(b\)进行二进制分解,考虑 \(a\),\(b\) 的每一位,若都为0,则\(x\)这一位为0时最佳;若一个为0,另一个为1,则\(x\)这一位为1或0对答案都没有影响;若都为1,则\(x\)这一位为1最佳

发现什么没有,我们这样的话实际上就是让\(a\bigoplus b\)了,也即\(\min(a\bigoplus x + b \bigoplus x)= a\bigoplus 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\n",a^b);
	}
	return 0;
}
posted @ 2020-11-01 22:21  fpjo  阅读(78)  评论(0)    收藏  举报