标签:
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2130 Accepted Submission(s): 747


#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define maxn 1000000
char str[10];
int sg[maxn],n;
int get(int x)
{
if(x/100000) return 6;
if(x/10000) return 5;
if(x/1000) return 4;
if(x/100) return 3;
if(x/10) return 2;
return 1;
}
void dfs(int x)
{
int len=get(x);
for(int i=1;i<=len;i++)
{
int m=x;
int base=1;
for(int j=1;j<i;j++) base=base*10;
int temp=(m%(base*10))/base;
for(int j=temp;j<9;j++)
{
m+=base;
sg[m]=1;
}
}
if(len!=6)
{
int m=x;
int base=1;
for(int i=len;i<6;i++)
{
m=m*10;
for(int j=0;j<base;j++)
{
sg[m+j]=1;
}
base=base*10;
}
}
}
void fun()
{
memset(sg,0,sizeof(sg));
sg[0]=1;
for(int i=1;i<maxn;i++)
{
if(!sg[i])
dfs(i);
}
}
int main()
{
fun();
while(scanf("%s",str)!=EOF)
{
if(str[0]==‘0‘)
{
printf("Yes\n");
continue;
}
int len=strlen(str);
n=0;
for(int i=0;i<len;i++)
{
n=n*10;
n=n+str[i]-‘0‘;
}
if(sg[n]) printf("Yes\n");
else printf("No\n");
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4378939.html