python 7-9 约瑟夫环 分数 10 作者 usx程序设计类课程组 单位 绍兴文理学院 有n个人围成一圈(编号为1~n),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的位置是多少号? 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一个整数n(5≤n≤100)。 输出格式: 对于每组测试,输出最后剩下那个人的编号。 输入样例: 10 28 69 输出样例: 4 23 68
时间: 2024-02-22 18:59:01 浏览: 210
SMSC USX2064-AEZG-TR.
好的,以下是Python的代码实现:
```python
while True:
try:
n = int(input())
if n == 0:
break
arr = [i for i in range(1, n + 1)]
idx = 0
while len(arr) > 1:
idx = (idx + 2) % len(arr)
arr.pop(idx)
print(arr[0])
except:
break
```
每次读取一个整数n,如果n为0则退出程序。生成一个1到n的列表arr,然后用idx来记录当前报数的人的下标,每次将idx加2,然后对列表长度求模,得到下一个报数的人的下标。弹出该下标对应的人,重复上述步骤直到只剩下一个人,输出该人的编号即可。
阅读全文