位运算之谜

题目链接:https://ac.nowcoder.com/acm/problem/208337

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

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int main() {
 5     ll x, y, t; cin >> t;
 6     while(t--) {
 7       cin >> x >> y; // a + b = a ^ b + (a & b) * 2
 8       if(x - y * 2 < 0 || ((x - y * 2) & y)) {
 9         cout << -1 << "\n";
10       } else {
11         cout << x - y * 2 << "\n";
12       }
13     }
14     return 0;
15 }

 

posted @ 2022-03-20 18:13  TFLSNOI  阅读(28)  评论(0编辑  收藏  举报