HDU-2516-取石子游戏【 斐波那契博弈】

来源:互联网 发布:大专网络教育怎么样 编辑:程序博客网 时间:2024/05/14 09:29

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2516



取石子游戏



Problem 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
 

典型的斐波那契博弈


#include<iostream>using namespace std;int main(){int n,i;int fib[48]={0,1};for(i=2;i<48;i++)//fib[48]接近超过int的范围了 {fib[i]=fib[i-1]+fib[i-2]; }while(cin>>n){if(n==0)break;bool flag=0;for(i=3;i<48;i++)//题目n>=2 {if(n==fib[i]){flag=1; break;}}if(flag)cout<<"Second win"<<endl;elsecout<<"First win"<<endl;}return 0;}


原创粉丝点击