poj 3537
nim博弈,简单,1A
代码:
#include<iostream>
#include<fstream>
using namespace std;
int g[2001];
int v[2001];
int solve(int s){
int i,j,k;
if(v[s]) return g[s];
bool v2[2100]={0};
v[s]=1;
for(i=1;i<=s/2+1;i++)
{
if(i-3>=1)
j=solve(i-3);
else
j=0;
if(i+3<=s)
k=solve(s-i-2);
else
k=0;
v2[j^k]=1;
}
g[s]=0;
for(i=0;;i++)
if(v2[i]==0)
{
g[s]=i;
break;
}
return g[s];
}
void read(){
// ifstream cin("in.txt");
int i,j,k;
while(cin>>k){
solve(k);
if(g[k]!=0)
cout<<1<<endl;
else
cout<<2<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号