2024 - 穿越的皮卡丘

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

众所周知,精灵球类似一个传送门,但小智的精灵球出经常问题,所以某天皮卡丘被穿越到了一个二次元世界,这个世界只存在01,聪明的皮卡丘发现了一个皮卡丘数字能帮人穿越,任何一个皮卡丘数字n都不能由一个1n之间(不包括1n)某一个数字累加而成,fatboy也想穿越到二次元,所以尝试输入一些皮卡丘数字。

题目输入

输入包含多组样例,每组一行,包含数字n2<=n的长度<=30),当n0的时候结束输入。

题目输出

输出对应每组样例,每组占一行,如果n是皮卡丘数则输出“YES,否则输出“NO”。

输入/输出样例

输入格式

10
111
100
0

输出格式

YES
YES
NO

C++解答

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[30];
int main()
{
    while(scanf("%s",a)!=EOF)
    {

        int len=strlen(a);
        long long t=0;
        long long t1=0;
        for(int i=len-1;i>=0;i--)
        {   a[i]-='0';
          t1=a[i];
            for(int j=len-1;j>i;j--)
            {
                t1*=2;
            }
            t+=t1;

        }
        if(t==0) return 0;
//printf("%I64d\n",t);
        bool flag=0;
        for(long long i=2;i*i<=t;i++)
        {
            if(t%i==0)
            { //printf("%I64d\n",i);
                flag=1;break;
            }
            else flag=0;
        }
        if(flag==1) printf("NO\n");
        else printf("YES\n");
    }
}