HDU 2516 取石子游戏(博弈)

来源:互联网 发布:软件规格需求说明书 编辑:程序博客网 时间:2024/05/17 04:04

思路:手推了一下,发现n是斐波那契数时是必败态


#include<bits/stdc++.h>using namespace std;#define LL long longint fact[105];void init(){    fact[0]=1;fact[1]=2;for(int i = 2;i<=44;i++)fact[i]=fact[i-1]+fact[i-2];}int main(){init();int n;while(scanf("%d",&n)!=EOF && n){int flag = 0;        for(int i = 1;i<=44;i++)if(n==fact[i])flag=1;if(flag)printf("Second win\n");elseprintf("First win\n");    }}


Description

1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win". 
 

Input

输入有多组.每组第1行是2<=n<2^31. n=0退出. 
 

Output

先取者负输出"Second win". 先取者胜输出"First win". 
参看Sample Output. 
 

Sample Input

213100000
 

Sample Output

Second winSecond winFirst win
 


0 0
原创粉丝点击