将数组a[],1--m分别初始化为1,表示m只猴子都在圈中,报数时,每次报到n的猴子(比如猴子i),将a[i]赋值为0.则表示标号为i的猴子踢出圈中了。则每次报数时先判断a[i]是不是等于1,等于1表示报数,继续下一位报数;若不等于1,也就是等于0,表示该猴子已经踢出圈中了,则继续找,直到找到下一位可以报数的猴子。做m-1次踢出猴子的循环就可以统计出1-m中哪一个是1,则下标i表示该猴子的标号,即为猴王。
时间: 2023-05-25 10:05:33 浏览: 72
树状数组-20-子查询.ev4.rar
以下为Python示例代码:
n = int(input("请输入猴子报数的次数n:"))
m = int(input("请输入猴子的个数m:"))
# 初始化猴子数组
a = [1] * m
# 统计踢出猴子的次数和猴王的编号
count = 0
i = 0
while count < m-1:
if a[i] == 1:
count += 1
if count == m-1:
break
a[i] = 0
i = (i + 1) % m
# 输出猴王的编号
for i in range(m):
if a[i] == 1:
print("猴王编号为:", i+1)
break
运行结果:
请输入猴子报数的次数n:3
请输入猴子的个数m:5
猴王编号为: 4
阅读全文