📌  相关文章
📜  通过移除给定的 N 张牌中的最后一张,找出赢得游戏的玩家(1)

📅  最后修改于: 2023-12-03 15:12:25.980000             🧑  作者: Mango

通过移除给定的 N 张牌中的最后一张,找出赢得游戏的玩家

背景

有一个游戏,有 $m$ 张牌,以及两个玩家 A 和 B。A 和 B 轮流抽取其中的一张牌,每次只能抽一张,直到所有牌被抽完,最后一张牌被抽完的玩家获胜。现在给定 $n$,代表被抽取的牌的数量,问最后获胜的玩家是 A 还是 B?

思路

由于每次只能抽一张牌,因此把贡献相同的牌分成一组。显然,如果 $n$ 是偶数,那么 A 必胜。否则,会出现最后一张牌被 A 抽取而 B 获胜的情况,因此需要判断最后一张牌是否被 A 抽取。

代码
def winner(n: int, last_card: int) -> str:
    if n % 2 == 0:
        return 'A'
    else:
        return 'B' if last_card % 2 == 0 else 'A'
测试样例
assert winner(3, 2) == 'B'
assert winner(3, 3) == 'A'