题解 | #牛牛吃米粒#
牛牛吃米粒
https://ac.nowcoder.com/acm/contest/11179/A
题目大意
二进制上的若干位不能为1,问是否能组成x
解题思路
直接判断x的二进制在不能有1的位置上是否有1
code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define ull unsigned long long
using namespace std;
int n,k,pp,x;
ull s;
int main()
{
scanf("%d%d%llu",&n,&k,&s);
pp=0;
for(int i=1;i<=k;++i){
scanf("%d",&x);
if(s&(1llu<<x-1))pp=1;//如果这位是1,但是不能填1,就不能构成
}
if(s>(1llu<<n-1)-1+(1llu<<n-1))pp=1;//位数要够
if(pp)puts("NO");
else puts("YES");
return 0;
}
查看23道真题和解析