我们可以假设有n个物体 两个人谁先取得第n个物体就算赢(两人一人取一次分先后)每人每次最多取m个
(1)如果n<m+1(m>n-1且m为整数既等价于m>=n)那么第一个人可以取n个直接终结比赛
(2)如果n = m+1 (m=n-1)那么先手方无论m取多少后手方都有必胜的把握
(3)如果n>m+1(m<n-1) 必定存在这个等式成立m = k( m+1 )+ r
a.如果r = 0
那么先手方取x个后手方取m+1-x 就一定是必胜
b 如果r!=0
那么先手方取r个 后手方取x 先手方再取m+1-x个,就先手方存在必胜局
class Solution:
"""
@param n: an integer
@return: whether you can win the game given the number of stones in the heap
"""
def can_win_bash(self, n: int) -> bool:
# Write your code here
#m = 3
m = 3
if m+1>n:
return True
elif m+1 == n:
return False
elif m+1<n:
if n%(m+1) == 0:
return False #n = k(m+1)
else:
return True #n = k(m+1)+r
Solution().can_win_bash(8)