4. 有M个人围成一圈,每人一个的编号(1.2.3.....M),从第一个人数起,报到N时这个人就出圈。再继续数,数到N时这个人又出圈。直到只剩下一个人为止,输出出圈人的顺序。M、N从键盘输入。
时间: 2024-05-05 09:16:27 浏览: 81
python 有n个人围成一圈,顺序排号,问最后留下的是原来第几号的那位。(示例)
5星 · 资源好评率100%
```python
M = int(input("请输入M个人围成一圈:"))
N = int(input("请输入报到N时出圈:"))
# 初始化列表,表示每个人是否还在圈中
people = [True] * M
# 记录已经出圈的人数和当前的位置
count, index = 0, 0
# 开始报数
while count < M - 1:
# 计数器从1开始,数到N时出圈
i = 1
while i <= N:
if people[index]:
if i == N:
people[index] = False
count += 1
print("第{}个人出圈".format(index + 1))
i += 1
index = (index + 1) % M
# 最后剩下的一个人
for i in range(M):
if people[i]:
print("最后剩下的是第{}个人".format(i + 1))
break
```
运行结果:
```
请输入M个人围成一圈:10
请输入报到N时出圈:3
第3个人出圈
第6个人出圈
第9个人出圈
第2个人出圈
第7个人出圈
第1个人出圈
第8个人出圈
第5个人出圈
第10个人出圈
最后剩下的是第4个人
```
阅读全文