2024 - 穿越的皮卡丘
众所周知,精灵球类似一个传送门,但小智的精灵球出经常问题,所以某天皮卡丘被穿越到了一个二次元世界,这个世界只存在0和1,聪明的皮卡丘发现了一个皮卡丘数字能帮人穿越,任何一个皮卡丘数字n都不能由一个1到n之间(不包括1和n)某一个数字累加而成,fatboy也想穿越到二次元,所以尝试输入一些皮卡丘数字。
题目输入
输入包含多组样例,每组一行,包含数字n(2<=n的长度<=30),当n为0的时候结束输入。
题目输出
输出对应每组样例,每组占一行,如果n是皮卡丘数则输出“YES”,否则输出“NO”。
输入/输出样例
题目输入
10 111 100 0
题目输出
YES YES NO
提示
sample 3: 100 转化成10进制就是4,可以由2个 10 累加而成
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"); } }
提示
sample 3: 100 转化成10进制就是4,可以由2个 10 累加而成