*约瑟夫问题:有n个人围成一圈,顺序排号,从第一个开始报数(从1到m报数),凡报到m的人退出圈子,求最后剩下的是谁。 编写一个程序,输入n(n<100),再输入n个整数,按上面描述的方法循环删除第3个数据(即m=3),输出最后剩下的那个整数。
时间: 2023-05-25 11:04:34 浏览: 87
python 有n个人围成一圈,顺序排号,问最后留下的是原来第几号的那位。(示例)
5星 · 资源好评率100%
```python
n = int(input())
nums = list(map(int, input().split()))
index = 0
while len(nums) > 1:
index = (index + 2) % len(nums) # 每次删除第3个,所以index需要+2
del nums[index]
print(nums[0])
```
解释:
首先输入n和n个整数,将整数放进一个列表中。使用一个变量 `index` 记录当前应该删除的数的下标。每次删除时,将 `index` 加上 2(从0开始),然后对列表长度取余。
通过这种方式,可以实现按照题目要求每次从当前位置起算,删除第3个数。直到列表长度为1,即得到最后留下的数,输出即可。
阅读全文