在 Python 中查找赛艇运动员减少比赛获胜者的程序
假设我们有一个数组高度。有n个不同高度的塔。Amal和Bimal正在玩游戏。游戏规则如下
Amal总是先玩
每次移动时,当前玩家选择一个高度为X的塔,并将高度降低到Y[1<=Y<X;Y均分X]
谁不动谁输
我们必须找到获胜者的名字。
因此,如果输入类似于height=[3,1,2],那么输出将是Bimal,因为初始高度是{3,1,2}。如果Amal将塔2的高度减少到1,Bimal可以将3减少1,但Amal没有动作,所以Bimal获胜。
示例
让我们看看以下实现以获得更好的理解-
def util(a,n):
ans = 0
for i in range(n):
ans = ans^a[i]
return ans
def solve(height):
n = len(height)
b = [0 for i in range(n)]
for i in range(n):
if(height[i] == 1):
b[i] = 0
else:
b[i] = 0
j = 2
root = int(pow(height[i],0.5))
while(height[i] != 1 and j<=root):
if(height[i]%j == 0):
while(height[i]%j == 0):
b[i] += 1
height[i] = height[i]//j
j += 1
if(height[i] != 1):
b[i] += 1
ans = util(b, n)
if(ans != 0):
return "Amal"
else:
return "Bimal"
height = [3,1,2]
print(solve(height))输入
[3,1,2]输出结果
Bimal