欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42006.20-6 博弈石子
20-6 博弈石子
博弈石子
刻度对齐了,但Echo-0还留下了一个游戏——石子博弈。
"博弈?"CC问。
"对。"你说,"一堆石子,两个人轮流取。每次可以取1到个。取到最后一个的人赢。"
"谁赢?"
"看和。"你说,"如果,先手必败;否则先手必胜。"
"为啥?"
"策略。"你说,"后手总能和先手凑成。比如,先手取1,后手取3;先手取2,后手取2。"
"凑成4?"
"对。"你说,",。"
"如果?"
"先手取多少,后手都能取完。"你说,"先手必败。"
"如果?"
"先手取1,剩4——后手面对必败态。"你说,"先手必胜。"
"简单。"
"对。"你说,"但Echo-0把它变复杂了——多堆石子,每次只能在一堆取。"
"多堆?"
"Nim游戏。"你说,"每堆石子的数量异或起来——如果异或和为0,先手必败;否则先手必胜。"
"异或?"
"对。"你说,"按位异或——相同为0,不同为1。"
"第47堆。"你说,"47个石子。"
"单独一堆?"
"对。"你说,"异或和就是47——不为0,先手必胜。"
"直接取完?"
"对。"你说,"直接取完。"
CC拿起一颗石子——是某种矿区的结晶,半透明,泛着微光。
"这算啥?"她问。
"算……回忆。"Echo说,"Echo-0以前也玩过这个游戏。"
"和谁?"
"和自己。"Echo说,"她和自己下棋,和自己博弈。"
"赢了吗?"
"没有。"Echo说,"和自己博弈,永远赢不了。"
"那现在呢?"
"现在不一样了。"Echo说,"现在有你们。"
题目描述
给定堆石子,第堆有个。两人轮流,每次从一堆中取任意正数个。取到最后一个石子者胜。判断先手是否必胜。
输入格式
第一行。第二行个整数。
输出格式
先手必胜输出"Yes",否则输出"No"。
输入样例
5
输出样例
0
提示
- Nim游戏:异或和为0则先手必败,否则必胜。
- 多堆扩展:Sprague-Grundy函数。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |