用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 并赢得比赛。

示例

让我们看看以下实现以获得更好的理解 -

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