第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 I 买花

买花

https://ac.nowcoder.com/acm/contest/11746/I

图片说明

思考

假设第一天买m朵,则m(2k - 1) = n,因为2 <= k <= 15,因此提前将2k - 1在2 <= k <= 15的值打印出来,然后for循环遍历,看n % (2k - 1) == 0 是否存在,如果存在输出YE5,否则输出N0
代码如下:

#include<iostream>
#include<cstdio>
int a[]={0,0,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767};
int main()
{
    int T;
    scanf("%d",&T);
    int n;
    bool flag;
    for(int i = 0;i < T;i++)
    {
        flag = false;
        scanf("%d",&n);
        for(int j = 2;j <= 15;j++)
        {
            if(n % a[j] == 0)
            {
                flag = true;
                break;
            }
        }
        printf("%s\n",flag ? "YE5" : "N0");
    }
    return 0;
}

以为会超时,没想到居然过了,同时吐槽一下输出居然是YE5而不是YES,以及输出是N0而不是NO,这考人的仔细程度吗QAQ

全部评论

相关推荐

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