二叹人心太炎凉,百|

IOIAK_wanguan

园龄:2年6个月粉丝:2关注:0

2023-08-11 22:17阅读: 101评论: 0推荐: 0

洛谷-P9496 题解

正文

在讲解之前,先来几种简单情况:

n=1 转变成 m=0,只需要让 n0 即可;

n=0 转变成 m=1,只需要让 n1 即可。

n 扩展成更大的。对于 n 二进制的每一位数,只需要按上述情况处理即可,而由于可以对任意数进行位运算,所以相同类型的位运算可以合并成一次。

由于只有两种位运算,很容易知道,最终答案 ans{0,1,2}

如果 n 有一个二进制位需要或,则最终 ansans+1,若有一个二进制位需要与,则最终 ansans+1

输出 ans 即可。

#include<iostream>
using namespace std;
long long n,m;
int T,huo,yu;
int main(){
ios::sync_with_stdio(false),cin.tie(0);
cin>>T;
while(T--){
cin>>n>>m,huo=0,yu=0;
for(int i=0;(n>>i)||(m>>i);i++)
if((n>>i&1)==0&&(m>>i&1)==1) huo=1;
else if((n>>i&1)==1&&(m>>i&1)==0) yu=1;
cout<<huo+yu<<'\n';
}
}

AC 记录

后附

日志

v1.0 on 2023.08.07: 发布

本文作者:wanguan

本文链接:https://www.cnblogs.com/wanguan/p/17624057.html

版权声明:本作品采用 BY-NC-SA 4.0 许可协议进行许可。

posted @   IOIAK_wanguan  阅读(101)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起