Python程序:查找数字递减游戏中获胜者


假设阿马尔和比马尔正在玩一个游戏。他们有一个数字n,他们检查它是否为2的幂。如果是,他们将其除以2。否则,他们将其减去下一个较小的也是2的幂的数字。谁将数字减少到1,谁就赢得游戏。阿马尔总是先开始游戏,然后我们必须找到获胜者的姓名。

所以,如果输入像n = 19,那么输出将是阿马尔,因为19不是2的幂,所以阿马尔将其减少到16,然后比马尔除以2得到8,然后阿马尔再次除以2得到4,然后比马尔将其变为2,最后阿马尔除以2得到1并赢得游戏。

为了解决这个问题,我们将遵循以下步骤:

  • res := 0
  • 当 n > 1 时,执行以下操作
    • b := 1
    • 当 b * 2 < n 时,执行以下操作
      • b := b * 2
    • n := n - b
    • res := res + 1
  • 如果 res 模 2 等于 0,则
    • 返回 '阿马尔'
  • 否则,
    • 返回 '比马尔'

示例

让我们看看下面的实现,以便更好地理解:

Open Compiler
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

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

Amal

更新于: 2021年10月23日

160 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告