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,则
- 返回 '阿马尔'
- 否则,
- 返回 '比马尔'
示例
让我们看看下面的实现,以便更好地理解:
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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP