取石子游戏
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6872 Accepted Submission(s): 4145
参看Sample Output.
First win
斐波那契博弈:有一堆石子,先取的赢当且仅当石子的个数是斐波那契数列的一个,否则后取的赢
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans[1100];
int num = 2;
void init()
{
ans[0]=ans[1]=1;
for(int i = 2;; i ++){
ans[i] = ans[i-1]+ans[i-2];
if(ans[i]>pow(2,31)){
break;
}
num ++;
}
}
int main()
{
init();
int n;
while(scanf("%d", &n)!=EOF && n){
bool fou = false;
for(int i = 0; i < num; i ++){
if(ans[i]==n){
fou=true;
break;
}
}
if(!fou) cout << "First win"<<endl;
else cout << "Second win" << endl;
}
return 0;
}