输入n个石子,对每回合每名角色可以选择取[1,min(m,n)]个石子,最后取完就输,判断先手能赢吗?
当 n>m+1时 n%(m+1)==0时先手胜
当 m+1≥n>1 先手必胜
当 n==1时 先手必输
推导:
我们想要找到 A 拿时导致 B 在拿时拿到 2 到 m+1 个物品的情况。
首先,我们观察剩下的物品数 x 除以 (m+1) 的余数。设余数为 r。
如果 r = 0,那么 B 可以拿走 m 个物品,使得下一轮 A 拿时剩下的物品数不是 (m+1) 的倍数,从而 B 获胜。因此,A 希望避免这种情况。
如果 r ≠ 0,那么 A 可以选择拿走 x - r 个物品。这样,剩下的物品数为 r,而 r 一定不是 (m+1) 的倍数,因此无论 B 拿多少个物品,剩下的物品数也不会是 (m+1) 的倍数。这样,B 就无法获胜,A 会选择这种情况。
所以如果 x 除以 (m+1) 的余数为 r ≠ 0,则 A 拿时剩下的物品数应该是 x - r。