牛客小白月赛28 D. 位运算之谜 题解

位运算之谜

https://ac.nowcoder.com/acm/contest/7412/D

Description


Solution

基础太差了,没想出这题。
对于 其实是二进制的不进位运算, 因此有公式。该公式表示 二进制位上均为 1 的相加会进位。
那么
其中需要满足 二进制位上不能有相同的,否则输出-1.

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    ll x, y, t; cin >> t;
    while(t--) {
      cin >> x >> y; // a + b = a ^ b + (a & b) * 2
      if(x - y * 2 < 0 || ((x - y * 2) & y)) {
        cout << -1 << "\n";
      } else {
        cout << x - y * 2 << "\n";
      }
    }
    return 0;
}
全部评论

相关推荐

11-27 19:43
门头沟学院 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司8个岗位
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务