题目描述
给定一个 n 和 k,一个小兵初始位置在长度为 n 的线段上的第 n 个点,每次可以向左走 1 / 2 / k 格,Alice先移动这个小兵,Bob后移动这个小兵,最后不能移动的人为输家,问谁能获胜。
思路
在没有 k 的情况下考虑
当 n % 3 == 0 时,Bob 必能能走出一种走法使得每次移动到的位置都是3的倍数,Bob必胜状态
当 n % 3 == 1 或者 n % 3 == 2, Alice 必有一种走法使得每次让小兵移动的位置到 3 的倍数上面,把必败态转移给 Bob
加入 k 的状态时,需要考虑两种情况
1. k % 3 != 0
可以直接看成每次移动了 1 格或者 2 格,例如 k = 偶数 的时候,其为 2 的倍数,可以看成是走了多个 2 格的状态,当 k = 奇数 且 k % 3 != 0 时,可以看成走了多个 1 格状态。
所以给状态下 Bob 的必胜态:
if(k % 3 != 0)
if(n % 3 ==