题解:
博弈论
然而我直接暴力dp
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
int f[N],n,T;
void init()
{
f[]=;
for (int i=;i<N;i++)
{
int j=i,Min=,Max=;
while (j)
{
if (j%!=)
{
Max=max(j%,Max);
Min=min(j%,Min);
}
j/=;
}
if (Min!=&&!f[i-Min])f[i]=;
if (Max!=&&!f[i-Max])f[i]=;
}
}
int main()
{
init();
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
if (f[n])puts("YES");
else puts("NO");
}
}