题目
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
示例:
输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
答案
#
# @lc app=leetcode.cn id=292 lang=python3
#
# [292] Nim 游戏
#
# @lc code=start
class Solution:
def canWinNim(self, n: int) -> bool:
return n % 4 != 0
Solution().canWinNim(4)
# @lc code=end
Note
巴什博奕,n%(m+1)!=0时,先手总是会赢的
n 是总数,m是每次最多拾起的数
https://baike.baidu.com/item/%E5%B7%B4%E4%BB%80%E5%8D%9A%E5%BC%88/1819345?fr=aladdin
