1025:除数博弈(1435 分)
目录
题目
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。
最初,黑板上有一个数字 n
。在每个玩家的回合,玩家需要执行以下操作:
- 选出任一
x
,满足0 < x < n
且n % x == 0
。 - 用
n - x
替换黑板上的数字n
。
如果玩家无法执行这些操作,就会输掉游戏。
只有在爱丽丝在游戏中取得胜利时才返回 true
。假设两个玩家都以最佳状态参与游戏。
示例 1:
输入:n = 2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作。
示例 2:
输入:n = 3 输出:false 解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。
提示:
1 <= n <= 1000
分析
#1
典型的博弈问题,令 f[i] 代表先手面对数字 i 能否获胜,即可递推。
|
|
71 ms
#2
还有个巧妙的想法
- 若 N 是偶数,则爱丽丝取 1
- N-1 的因子都是奇数,不管鲍勃选什么,留给爱丽丝的仍然是偶数
- 到最后必然是鲍勃面对 1,爱丽丝获胜
- 同理,若 N 是奇数,则鲍勃必胜
解答
|
|
37 ms