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