在 Python 中查找集合元素移除游戏获胜者的程序
假设我们有一组前n个自然数{1..n}。Amal和Bimal正在玩game.The游戏规则如下
Amal总是先玩
在每次移动期间,当前玩家从集合中选择一个质数p。然后玩家从集合中移除p和它的所有倍数。
谁不动谁输游戏如果我们有n,我们必须找到获胜者的名字。
所以,如果输入像n=5,那么输出将是Amal,因为初始集合是{1,2,3,4,5}。现在让Amal选择一个数p=2,并从集合中移除2,4,所以当前集合为{1,3,5},还剩下两个素数,所以Bimal可以选择其中任何一个但没有剩余元素删除,最后Amal删除另一个素数并赢得比赛。
示例
让我们看看以下实现以获得更好的理解-
primes = [0 for i in range(100001)]
sieve = [0 for i in range(100001)]
for i in range(2, 100000):
if sieve[i] == 0:
primes[i] = primes[i-1]+1
for j in range(i, 100001, i):
sieve[j] = i
else:
primes[i] = primes[i-1]
def solve(n):
return "Bimal" if primes[n] % 2 == 0 else "Amal"
n = 5
print(solve(n))输入
5输出结果
Amal
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短