https://atcoder.jp/contests/abc238/tasks/abc238_d
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 1e3 + 10;
const int mod = 998244353;
long long dp[5][5][(1 << 10) + 10];
typedef long long ll;
string s;
ll n, m;
ll poww (ll a, ll b) {
ll ans = 1;
while (b) {
if (b & 1) ans = ans * a % mod;
b >>= 1;
a = a * a %mod;
}
return ans;
}
void solve() {
ll a, s;
cin >> a >> s;
string ans = "No";
if (2 * a <= s) {
ll dif = s - 2 * a;
if ((dif & a) == 0) ans = "Yes";
}
cout << ans << endl;
}
int main () {
int t;
cin >> t;
while (t --) solve();
return 0;
}
通过令x是都为1的集合,b是其中之一是1的集合,a&b=0 所以y = s - 2 * x 这题通过构造一个解。