题目描述
甲、乙两人轮流从两堆棋子中取棋子,满足下列要求:或者从一堆中取出任意多枚(至少一枚)棋子,或只从两堆中取出同样数目(至少一枚)的棋子,将两堆取完并取到最后一枚棋子者获胜。问:在什么情况下,甲(先取者)有必胜策略?输入格式
只有一行,包含两个用空格隔开的整数表示两堆棋子的个数(每堆棋子至少一个,至多10000个)。输出格式
只有一行,包含一个字符。若先取者有必胜策略,输出“Y”(不含引号);否则,输出“N”(不含引号)。【样例输入1】
1 1【样例输入2】
5 3【样例输出1】
Y【样例输出2】
N

从简单的情况入手。
设n为较大一堆棋子的数目,m为较小一堆棋子的数目。
当n = 1, m = 2时,很容易得出此时必败。
同理当(n, m) = (3, 5), (4, 7), ...时,也必败。其余情况都必胜(因为可以通过一步转化,从而对手必败)。
由贝蒂定理,


那么,必败的充分必要条件为:

Accode:

#include <cstdio>
#include <cmath>
int main()
{freopen("chess.in", "r", stdin);freopen("chess.out", "w", stdout);int n, m; scanf("%d%d", &n, &m);if (m > n) {int tmp = n; n = m; m = tmp;}printf("%s\n", int(double(n - m) *(sqrt(5.L) + 1.) / 2.) - m ? "Y" : "N");return 0;
}

★【博弈论】【贝蒂定理】取棋子游戏相关推荐

  1. 博弈论——1218:取石子游戏

    1218:取石子游戏时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10430 通过数: 4939 [题目描述] 有两堆石子,两个人轮流去取.每次取的时候,只能从较多的那堆石子里取 ...

  2. 博弈论之双人取数游戏详解

    描述 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的两端取数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时 ...

  3. 博弈论之取石子游戏的学习

    以下内容来自转载: 博弈问题简介 所讨论的博弈问题满足以下条件: 玩家只有两个人,轮流做出决策 游戏的状态集有限,保证游戏在有限步后结束,这样必然会产生不能操作者,其输 对任何一种局面,胜负只决定于局 ...

  4. POJ1067 取石子游戏 跪跪跪,很好的博弈论

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29951   Accepted: 9814 Descriptio ...

  5. 取石子游戏,程序员用博弈论教你如何必胜

    1.游戏规则 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子(至少取1个). 每次有两种不同的取法,规则如下: 1.一是可以在任意的一堆中取走任意多的石子:2.二是可以在两堆中同时取走相同 ...

  6. [AcWing] 1319.移棋子游戏 博弈论 Sg函数板子题

    题目链接:1319.移棋子游戏 题解 好久没写博弈论的题了,写几道复习一下,博弈论SG主要由两大部分组成:SG函数和SG定理 SG(x)=mex(S),其中S是x的后继状态的SG函数值集合,mex(S ...

  7. P1247 取火柴游戏 (博弈论)

    原题链接:取火柴游戏 - 洛谷 题目描述 输入 k及 k个整数 n1​,n2​,-,nk​,表示有 k 堆火柴棒,第 ii堆火柴棒的根数为ni​:接着便是你和计算机取火柴棒的对弈游戏.取的规则如下:每 ...

  8. 【一本通】1218:取石子游戏(博弈论)

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

  9. OPJ-1067 取石子游戏 解题报告(数论) 取石子游戏,betty定理

    连接--A - 取石子游戏 Time Limit:1000MS    Memory Limit:10000KB    64bit IO Format:%I64d & %I64u Descrip ...

  10. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

最新文章

  1. 有5个学生,4门课程,用子函数的方法显示平均分最高的学生的所有成绩
  2. IOS固定IP对动态IP用pre-share
  3. python基础教程怎么样-怎样学习Python?Python入门必看
  4. 【Netty】Netty 核心组件 ( ChannelHandlerContext )
  5. 新风系统风速推荐表_家用新风常用管道规格和对应风量推荐值
  6. C#中使用FilleStream实现视频文件的复制
  7. 解析 | K8S之网络插件exec
  8. PHP算法为数组补全不存在的键
  9. Linux下仿windows任务管理器,开源任务管理器 Process Hacker (Windows)
  10. Linux系统日常维护命令
  11. 12.swift 元祖
  12. 电商之争:亚马逊与阿里一较高下
  13. angular学习-入门基础
  14. html弹框整体缩放,网页弹出对话框无法放大
  15. 立创3D文件转成stp文件应用到AD中
  16. 斯珀林研究图像记忆的时限,用的方法是延迟部分报告法吗?|小白心理-312/347考研答疑
  17. 看完就能学会如何使用热敏电阻!
  18. 母函数(指数型)(泰勒展开式)
  19. JavaScript 数字转成大写“零壹贰叁肆伍陆柒捌玖”的方法
  20. 手游LTV(生命周期价值)计算公式

热门文章

  1. 常用网络拓扑在网络规划设计中
  2. 用华为模拟器ENSP构造校园网(第三天)配置总网络拓扑DHCP中继和实现路由通信
  3. 测试显卡用什么软件最好,显卡测试用什么软件 怎么测试显卡性能
  4. 电脑鼠标右键菜单太多了怎么办?Windows右键菜单清理删除方法
  5. DEV GridView同时多列排序,附上排序列是实体解决右击没有排序箭头的问题
  6. win7win8 64位汇编开发环境合集安装与设置
  7. 树莓派通过CuteFTP 9.0 与 电脑互传文件
  8. Windows阿帕奇apache服务器安装(httpd)
  9. HTML零基础,快速学习/复习
  10. 电脑计算机未输出任何信号 键盘没亮,戴尔计算机不显示信号,为什么计算机屏幕不显示...