zoukankan      html  css  js  c++  java
  • hdu 2516 取石子游戏

    取石子游戏

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


    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
    2
    13
    10000
    0
     
    Sample Output
    Second win
    Second win
    First win
     
    Source
     
    Recommend
    lcy
    //网上称这是 斐波切博弈
    //2,3,4,5,6都是很容易推知的
    //其中对于一个n,第一次最多不能拿超过n/3,这点很肯定
    //那么对于2,3,5,8这些必输点来讲就只要后面适当的取数可以到这些点就可以了,那么就可以让对方输
    //比如12到8相差4,4个数先取的胜,先取的人可以使之是8个,那么第二个人就数了
    //二对于13,到8相差5,5个数先取的必输、那么第二个人可以使之到8,那么第一个人就输了
    //以此类推下去、、、、、

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    #include <queue>
    using namespace std;
    int f[50];
    int main()
    {
        int i,n;
        f[0]=2;
        f[1]=3;
        for(i=2;i<44;i++)
         f[i]=f[i-1]+f[i-2];
        while(scanf("%d",&n),n)
        {
           for(i=0;i<44;i++)
            if(n==f[i])
             break;
           if(i<44)
            printf("Second win\n");
           else
            printf("First win\n");
        }

        return 0;
    }

  • 相关阅读:
    ASP.NET MVC one view bind many model
    说一说MVC的CustomHandlerErrorAttribute(五)
    今天俺要说一说工厂方法模式(Factory)
    今天俺要说一说简单工厂模式(Simple Factory)
    我对SQL性能优化的看法,对我的文章有提议的欢迎评论!
    Linux 服务管理两种方式service和systemctl
    Linux grep命令
    Linux 守护进程
    linux Ctrl+z和Ctrl+c的区别
    linux系统卡解决方案
  • 原文地址:https://www.cnblogs.com/372465774y/p/2618312.html
Copyright © 2011-2022 走看看