用python编写程序,有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
时间: 2023-12-23 16:20:09 浏览: 117
python 有n个人围成一圈,顺序排号,问最后留下的是原来第几号的那位。(示例)
5星 · 资源好评率100%
好的,这是一道经典的约瑟夫问题,可以用Python来解决。以下是代码实现:
```python
def josephus(n):
# 创建一个列表,表示n个人围成的圈
people = list(range(1, n+1))
i = 0 # 记录当前报数的人的索引
while len(people) > 1:
i = (i + 2) % len(people) # 报数,每次报到3,即报数2次
people.pop(i) # 删除报数的人
return people[0] # 返回最后留下的人的编号
# 测试
n = 10
last_one = josephus(n)
print("最后留下的是原来的第%d号的那位。" % last_one)
```
输出结果为:
```
最后留下的是原来的第5号的那位。
```
因此,如果有10个人围成一圈,最后留下的是原来的第5号的那位。
阅读全文