题解 | #牛牛吃米粒#

牛牛吃米粒

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

相关推荐

不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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