题解 | #牛牛吃米粒#

牛牛吃米粒

https://ac.nowcoder.com/acm/contest/11179/A

不知大家有没有发现一个小细节,这道题所有的数字都和 2 有关。

直线上第 个格子所代表的米粒数在二进制下表示为一个(自右往左)第 位为1,其余位为0的一个二进制数。

考虑数 在二进制下的表达方式,其某一位为1则判断一个该位是否存在米粒。

#include<cstdio>
#define LL long long
const int MAXN=68;
bool vis[MAXN];
int main()
{
    int n,k;
    LL s;
    scanf("%d%d%lld",&n,&k,&s);
    for(int i=1;i<=k;i++)
    {
        int x;
        scanf("%d",&x);vis[x-1]=1;
    }
    bool flag=1;
    for(int b=0;s;s>>=1,b++)
    {
        if(s&1)
        {
            flag&=(!vis[b]);
        }
    }
    flag?printf("YES\n"):printf("NO\n");
    return 0;
}
全部评论
为什么我用cin输入就不对,用scanf就对了
点赞
送花
回复
分享
发布于 2021-11-18 20:52

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务