zcmu.oj-取石子游戏 1

原创 2018年04月17日 18:45:50

Description

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

Input

多组测试数据。

每组测试数据包含1个整数n。(1<n<=1000000000)

Output

对于每组测试数据,输出谁获胜.

Sample Input

21310000

Sample Output

Second winSecond winFirst win



分析:

这道题目是FIB必败证明,可以很轻易发现:2,3,  5,  8.....都是谁先取,就失败,这是一组斐波那契数列;

所以我们需要找到在给定的 1-n数组中的斐波那契数就可以解决这道题目;


std::binary_search —— 二分查找法

一个查找非常厉害的算法,也是非常基础的。作用是 binary-search的作用是在容器中检测容器中是否存在给定值得元素,如果存在,则返回true,否则返回false;

题目中需要用binary-search方法查找 1~n中的斐波那契数;

头文件---#include<algorithm>;


代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define MAXN 5005 //定义一个宏变量,方便更改数据
using namespace std;
int main()
{
    int fib[44];
    fib[0] = 2;
    fib[1] = 3;
    for(int i=2; i<44; i++)
        fib[i] = fib[i-1] + fib[i-2];
    int n;
    while(~scanf("%d",&n))
    {
        if(std::binary_search(fib,fib+44,n))
            printf("Second win\n");
        else
        {
            printf("First win\n");
        }
    }
    return 0;
}


取石子游戏【各类取石子总结】

上次做poj 1067的取石子游戏,只用到了whthoff博弈,未涉及到取石子的异或方法,今天重新搜索,整理了一遍。搜罗各种资料,加上自己整理,终于成篇啦!……噼里啪啦   取石子问题 ...
  • u014733623
  • u014733623
  • 2014-06-03 17:17:43
  • 2375

[转]由poj 1067引发的——取石子游戏【各类取石子总结】

由poj 1067引发的——取石子游戏【各类取石子总结】http://www.cnblogs.com/celia01/archive/2011/11/15/2250171.html取石子问题有一种很有...
  • Booky_Amnesia
  • Booky_Amnesia
  • 2015-01-10 21:43:01
  • 464

POJ-1067 取石子游戏

POJ-1067 取石子游戏/*黄金分割比例判断是不是非奇异局势,面对奇异局势必败 两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜 反之,则后拿者取胜。 */ //公式 ak =[k(1+...
  • u010893129
  • u010893129
  • 2014-03-10 23:00:38
  • 1277

POJ-1067-取石子游戏

其实就是威佐毒博弈(Wythoff Game),具体可以百度一下《关于博弈论基础知识的一些总结》,上面有提到这个博弈所得到的2个结论 即假设必败点必然(a,b) 则有 a=floor(i*(1+5^...
  • z309241990
  • z309241990
  • 2013-08-07 15:13:29
  • 736

OpenJudge NOI题库 6266:取石子游戏

题目 本题的提示还是够详细了: 假设石子数目为(a,b)且a >= b,如果[a/b] >= 2则先手必胜,如果[a/b]...
  • yuanxinyu402
  • yuanxinyu402
  • 2015-11-01 23:08:43
  • 731

取石子游戏解题报告

有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍.最后谁能够把一堆石子取空谁就算赢. 比如初始的时候两堆石子的数目是25和7 25 ...
  • TA201314
  • TA201314
  • 2015-04-13 21:33:44
  • 1831

取石子游戏(ACM题目)

 题目来自:(第一次做ACM的题目,推算了很长时间)http://acm.pku.edu.cn/JudgeOnline/problem?id=1067Description有两堆石子,数量任意,可以不...
  • min_jie
  • min_jie
  • 2009-03-08 03:36:00
  • 6642

BZOJ 1413 [ZJOI2009] [洛谷2599] 取石子游戏 (博弈论 dp )

这个题数据有点水,有个奇葩程序可以过。。。(也不知道为什么。。。) 首先,讲个性质,取石子时,当先手使得左右两边的石子相等时,可以保证先手必胜,因为当先手取到左右石子相等的局面时,则后手无论在哪一堆...
  • wzw1376124061
  • wzw1376124061
  • 2017-03-09 21:34:26
  • 453

bzoj 1413 [ZJOI2009]取石子游戏 博弈论 dp

果然浙江出神题呀。。。首先有这么一个结论:对于一段区间的石子,在这段区间左侧放一堆石子(个数可以为0)有且仅有一个石子个数使得到的状态为先手必败态。1.因为如果有一种以上的个数,假设有x,y(x...
  • make_it_for_good
  • make_it_for_good
  • 2016-11-25 09:40:50
  • 1018

[F][5]openjudge 6266 取石子游戏

博弈论
  • chai_jing
  • chai_jing
  • 2016-10-12 18:27:44
  • 402
收藏助手
不良信息举报
您举报文章:zcmu.oj-取石子游戏 1
举报原因:
原因补充:

(最多只允许输入30个字)