扩展巴什博弈(Python)
【模板】扩展巴什博弈
https://www.nowcoder.com/practice/4b0d36a3d3884cf69f618cf4c2511d82
前言:预祝大家新年快乐!希望大家能够在新的一年中,继续努力,实现自己的目标,成为更好的自己!
思路:经典博弈论结论题。扩展巴什博弈:一堆有n个石子,每次可以取l~r个石子,少于l个石子不能再取,取走最后一个石子的人获胜。问先手和后手谁会赢?结论就是:当时,先手必败;其他情况下,先手必胜。然后我们就根据这个结论来进行答案的收集,最终输出结果即可
你套用一般巴什博弈的前提,取1~m个石子,用扩展巴什博弈的结论可以得到先手必败为,也就是一般巴什博弈的结论:
时,先手必败
扩展:
尼姆博弈(多堆取石子问题):假设有堆石子,每堆石子有
个,如果每堆石子数的异或和为0,则先手必输;否则先手必胜。
1.小A取石子 https://www.nowcoder.com/practice/0a2d9f1d04e44e10a3cf087c34df863b?channelPut=tracker2
一般巴什博弈(单堆取石子问题):一堆有n个石子,每次可以取1~m个石子,当时,先手必败;当
时,先手必胜。
2.巴什博弈 https://www.nowcoder.com/practice/9bb882504d574ec287f69e967ce0fb95?channelPut=tracker2
代码:
import sys
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
'''
out = []
def solve():
n, l, r = LII()
if 0 <= n % (l + r) < l:
out.append("NO")
else:
out.append("YES")
# t = 1
t = II()
for _ in range(t):
solve()
print('\n'.join(out))
#每日一题挑战#