Easy
拿到题目一脸懵逼,还是只能硬着头皮慢慢分析
F(1): 操作不了,谁拿谁输
F(2):
A先拿,只能拿1, 变成F(1), B输
F(3):
A只能拿1,变F(2), 轮到B,A输
F(4)
两种情况:A可以拿1,可以拿2
A拿1,变F(3), B拿1,变F(2), A赢B输
A拿2,变F(2), A输B赢
结论:
F(4)
这种情况,A要让自己赢的话,肯定是拿1
F(2)
谁就可以赢N
是奇数的情况,拿的约数只能是奇数,这样的话剩下的是偶数N
是偶数的情况,约数可以选奇数,也可以选偶数。想让自己赢的话,保证让对方去拿基数,拿到自己这边就必然是偶数。升到最后自己这边剩下2
就能必赢了N
的奇偶,应为Alice
先拿,所以初始为偶数Alice
必赢python3
class Solution:
def divisorGame(self, N: int) -> bool:
return N % 2 == 0