使用Python查找减少数字游戏中的获胜者

使用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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程