Codeforces Round #676 (Div. 2) A. XORwice

在这里插入图片描述

#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异或吗?这就很简单了,剩下处理输入输出就完事了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值