zoukankan      html  css  js  c++  java
  • 51nod 1070 Bash游戏 V4

    题意:

    有n个石子,先手第一次不能全部取完,a和b轮流操作且每个人取的石子树不超过上一个人取的两倍,谁赢?

    知识点:

    博弈论,斐波那契博弈

    解法:

    这是斐波那契博弈的模板题,打表发现当n为斐波那契数的时候b赢,否则a赢。

    考虑证明:

    假如一个数是斐波那契数,那么它可以写成更小的两个斐波那契数的和,那先手肯定不能将小的那堆取完(取完的话后手可以拿掉大的那一堆,因为斐波那契数列满足下一项小于当前项的两倍)。取一部分的话,后手就把剩下的取掉,仍然留下一个斐波那契数给先手,所以先手必败。

    如果不是斐波那契数,由“齐肯多夫定理”(Zeckendorf)可得,每个正整数都可以分解成若干个不连续不同的斐波那契数的和,那么先手第一次取掉最小的那个斐波那契数,因为不连续,所以下一个肯定比当前的两倍要大,所以后手取不完,先手把剩下的那些取了,那么先手必胜。

    证毕。

  • 相关阅读:
    MySQL-5.7.26解压版安装教程
    asp.net core 系列之Configuration
    java之初识hibernate
    java框架学习系列
    java之struts2之异常处理
    java之struts2之ajax
    java之servlet之文件下载
    列出连通集
    幸运数
    英文单词排序
  • 原文地址:https://www.cnblogs.com/Ronald-MOK1426/p/12766309.html
Copyright © 2011-2022 走看看