贪心思想:通过排除非法数,确保或运算不会引入多余的1位。
代码展示:
#include <bits/stdc++.h>
using namespace std;
//对于k来说 如果k的第i位为0,则ai的第i为也为0(贪心思想 最优解)
//利用二进制进行拆位,用>>和&的方式进行
int t,n,k;bool check(int x,int k)
{for(int i=30;i>=0;i--){if(((k>>i)&1)==0){if(((x>>i)&1)==1){return false;}}}return true;
}int main()
{cin>>t;while(t--){cin>>n>>k;int x;int ans=0;for(int i=1;i<=n;i++){cin>>x;if(check(x,k)){ans|=x;}}if(ans==k){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return 0;
}