取石子游戏2

来源:互联网 发布:1hhhh.com域名升级 编辑:程序博客网 时间:2024/05/19 15:24

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

取石子游戏

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2598    Accepted Submission(s): 1475


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
 

Source
ECJTU 2008 Autumn Contest


这道题就是如果输入数据是斐波拉契数则就是必败态,即第二个人赢;
代码如下:
</pre><pre code_snippet_id="357333" snippet_file_name="blog_20140521_2_78545" name="code" class="cpp">#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int a[50];int main(){    int n, i, j;    a[1]=2;    a[2]=3;    for(i=3; i<50; i++)        a[i]=a[i-1]+a[i-2];    while(~scanf("%d", &n) && n )    {        j=0;        for( i=1; i<50; i++ )        {            if(n==a[i])            {                j=1;                break;            }        }        if(j==1)            printf("Second win\n");        else            printf("First win\n");    }    return 0;}



0 0
原创粉丝点击