使用Python查找减少数字游戏中的获胜者
假设Amal和Bimal正在玩一个游戏。他们有一个数字n,然后检查它是否是2的幂。如果是,他们将其除以2。否则,他们将其减少到下一个更低的2的幂。谁将数字减少到1就赢得了游戏。Amal总是开始这个游戏,然后我们必须找到获胜者的名字。
因此,如果输入类似于n = 19,则输出将是Amal,因为19不是2的幂次方,所以Amal将其减少为16,然后Bimal将其除以2得到8,然后Amal再次除以2得到4,然后Bimal让其成为2,最后Amal除以1并赢得了比赛。
要解决这个问题,我们将遵循以下步骤-
- res := 0
- while n > 1, do
- b := 1
- while b * 2 < n, do
- b := b * 2
- n := n – b
- res := res + 1
- if res mod 2 is same as 0, then
- return ‘Amal’
- otherwise,
- return ‘Bmal’
示例
让我们看以下实现以获得更好的理解-
def solve(n):
res = 0
while(n > 1):
b = 1
while(b * 2 < n):
b *= 2
n -= b
res += 1
if res % 2 == 0:
return 'Amal'
else:
return 'Bmal'
n = 19
print(solve(n))
输入
19
输出
Amal