题目:Problem - B - Codeforces



总结:
对于位运符算可查看:(4条消息) 位操作符(按位与:’&‘,按位或:‘ | ’,按位异或:‘^ ’)细节解析_00000000000000000000000000000000_CCPC不拿奖不改名的博客-CSDN博客
该题目主要考察对位运算的理解
对于按位或“|”有1为1 ,题目要求到达X
若X为3转化为2进制00 11 则求和后两位必须为1,前几位必须为0.
代码献上:
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int T, n, X, s, a[N];
void slv()
{
for (int i = 1; i <= n; ++i) cin >> a[i]; //输入
for (int i = 1; i <= n && ((a[i] & X) == a[i]); ++i) //判断书的知识是否符合条件
s |= a[i];
}
int main()
{
for (cin>>T; T--;)
{
cin>>n>>X; //数据输入
s = 0;
slv(); slv(); slv(); //三组数据
s == X ? cout << "Yes"<<endl : cout << "No"<<endl;
} //三目运算符判断输出
return 0;
}

该文详细解释了位运算符(按位与,按位或,按位异或)的概念,并提供了一个C++代码示例,用于解决Codeforces上的一个问题。问题的核心是理解如何使用按位或运算符来达到特定的二进制值。代码通过遍历并检查输入数组中的元素是否满足条件,最终组合结果来判断是否能得到目标值。
5134

被折叠的 条评论
为什么被折叠?



