| 比赛 | 20120416 | 评测结果 | AAAAAAAAAA | 
    | 题目名称 | 数字的游戏 | 最终得分 | 100 | 
    | 用户昵称 | kaaala | 运行时间 | 0.000 s | 
    | 代码语言 | C++ | 内存使用 | 0.00 MiB | 
    | 提交时间 | 2012-04-16 09:55:29 | 
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int G,N[110],mxx;
bool f[1000010];
void dp()
{
	for(int i=1;i<=mxx;i++)
	{
		char s[10];
		int bg=1,sm=i;
		sprintf(s,"%d",i);
		for(int j=0;j<strlen(s);j++)
		{
			int k=s[j]-48;
			bg=max(bg,k);
			if(k!=0&&sm>k)
				sm=k;
		}
		f[i]=!(f[i-bg]&&f[i-sm]);
	}
}
int main()
{
	freopen("cdgame.in","r",stdin);
	freopen("cdgame.out","w",stdout);
	scanf("%d",&G);
	for(int i=1;i<=G;i++)
	{
		scanf("%d",&N[i]);
		mxx=max(mxx,N[i]);
	}
	dp();
	for(int i=1;i<=G;i++)
		if(f[N[i]])
			printf("YES\n");
		else
			printf("NO\n");
	return 0;
}