先上本次contest的链接:
https://leetcode.com/contest/weekly-contest-132/
Divisor Game
本题重在分析。
首先必须明确,对于一个给定的N,其胜负结果都是确定的(否则N与比赛结果之间不存在函数关系,这道题也就没有答案了)
由于双方都按最优决策进行操作,必有如下结论:
1. 若初始数字为N时Alice先手必败,则初始数字为N时Bob先手也必败(Alice可以采取相同的策略)。
2. 进一步推出:若初始数字为N(N > 1)时Alice先手必败,则初始数字为N+1时Alice先手必胜(Alice第一步可以取1)
另外,我们注意到奇数的一个非常简单的性质:奇数的任何因子都是奇数
所以,当Alice先手面对的是奇数时,不管怎么取,必然取到奇数,而奇数-奇数=偶数,所以留给Bob的一定是一个偶数,此时Bob必然可以通过取1的方法再留给Alice一个奇数。如此循环往复,Bob总有应对策略,而必然存在某个时刻Alice面对的是那个讨厌的数字——1,此时game over,Alice输掉了。
**至此我们可以得出结论:N为奇数时Alice必败,再由结论2推出,N为