bzoj3404

时间:2021-09-08 08:21:39

题解:

博弈论

然而我直接暴力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");
}
}