位运算之谜
题目链接: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 }