原题
C. Bitwise Balancing
解析
题意如图
我们要求 a , 其实 a 只要满足条件即可, 我们可以发现每一位都不会影响到其它位, 因此对每一位检查, 发现对b c a, d 有固定结果
b c a d
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
bcd 无法为 011 和 100, 其它皆可找到对应的 a
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200010;
int n, m, k, q, ans;
int a[N];
void solve()
{
int b, c, d;
cin >> b >> c >> d;
int mask = 1;
int a = 0, bb = 0, cc = 0, dd = 0;
for (int i = 1; i <= 62; i ++ )
{
if (b & mask)
{
bb = 1;
}
else
{
bb = 0;
}
if (c & mask)
{
cc = 1;
}
else
{
cc = 0;
}
if (d & mask)
{
dd = 1;
}
else
{
dd = 0;
}
if(bb == 0 && cc == 1 && dd == 1)
{
cout << -1 << "\n";
return;
}
if(bb == 1 && cc == 0 && dd == 0)
{
cout << -1 << "\n";
return;
}
if(bb == 1 && cc == 1 && dd == 0)
{
a += mask;
}
if(bb == 0 && cc == 0 && dd == 1)
{
a += mask;
}
mask <<= 1;
}
cout << a << "\n";
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T = 1;
cin >> T;
while (T -- )
{
solve();
}
}