#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 2010;
int g[maxn];
bool vis[10*maxn];
int mex(){
for(int i=0;;i++)
if(!vis[i])
return i;
}
void init() {
g[0] = 0;
g[1] = g[2] = g[3] = 1;
for(int i = 4; i <= maxn; i++) {
memset(vis,0,sizeof(vis));
vis[g[i-3]]=1;
vis[g[i-4]]=1;
if(i>=5)
vis[g[i-5]]=1;
for(int j=3;j<i-3;j++)
vis[g[j-2]^g[i-j-3]]=1;
g[i]=mex();
}
}
int main(){
init();
int n;
while(~scanf("%d",&n)){
if(g[n])
printf("1\n");
else
printf("2\n");
}
return 0;
}
POJ 3537 Crosses and Crosses
最新推荐文章于 2020-03-16 14:14:32 发布