题解
2025-10-12 22:09:50
发布于:浙江
34阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, q;
cin >> n >> q;
vector<long long> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
long long or_set = 0;
for (long long num : a) {
or_set |= num;
}
vector<bool> has_zero(60, false);
for (int i = 0; i < 60; i++) {
if ((or_set >> i) & 1) {
for (long long num : a) {
if (!((num >> i) & 1)) {
has_zero[i] = true;
break;
}
}
}
}
while (q--) {
long long t;
cin >> t;
if ((t & or_set) != t) {
cout << "No\n";
continue;
}
bool possible = true;
for (int i = 0; i < 60; i++) {
if (!((t >> i) & 1) && ((or_set >> i) & 1) && !has_zero[i]) {
possible = false;
break;
}
}
cout << (possible ? "Yes" : "No") << "\n";
}
return 0;
}
全部评论 1
这dpsk做的吧
2025-10-13 来自 上海
0










有帮助,赞一个