1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > AND and SUM

AND and SUM

时间:2020-05-27 22:32:27

相关推荐

AND and SUM

链接:登录—专业IT笔试面试备考平台_牛客网

来源:牛客网

题目描述

给定两个整数a 和 s,问是否存在两个非负整数满足:

x&y=a

x+y=s

如果存在,输出 `Yes`,如果不存在输出`No`。

因为本题比较简单,数据给了多次查询。

输入描述:

输出描述:

示例:

输入:

2

1 8

4 2

输出:

Yes

No

思路:首先要知道二进制的加法可以变成 x + y = x ^ y + (x & y)*2;下面图片是一个解释例子

所以此题,d=s-2*a的值就是异或所得的值 ,因为a和s都是大于0的数,所以s-2a也要大于0;另外还可以发现异或和与的每一位相与都为0,也就是d&a等于0

代码:

#include<bits/stdc++.h>#define int long longusing namespace std;signed main(){int t;cin>>t;while(t--){int a,s;cin>>a>>s;int d=s-2*a; //异或值if(d<0||(d&a)){cout<<"No\n";}else cout<<"Yes\n";}}

算法小白一枚,如有不对之处,请大家指正。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。