题解:
一道非常简单的$SG$函数应用。
对于一个长度求它的$SG$函数,然后判断是否为$0$即可。
代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 2050; int n,sg[N]; int dfs(int x) { if(x<=0)return 0; if(~sg[x])return sg[x]; int tmp[N]={0}; for(int i=1;i<=x;i++) tmp[dfs(i-3)^dfs(x-i-2)]=1; for(int i=0;;i++) if(!tmp[i])return sg[x]=i; } int main() { memset(sg,-1,sizeof(sg)); sg[0] = 0; while(scanf("%d",&n)>0) { puts(dfs(n)?"1":"2"); } return 0; }