题解 | #牛牛吃米粒#

牛牛吃米粒

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;
}
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务