有30个人排成一队并按顺序编号为1到30,从编号为1的人开始报数,数到第9个人则出列,然后从下一个开始重新报数,第9个人则出列,如此循环下去,请根据出列顺序将出列人的编号制成列表并显示。
时间: 2024-05-30 15:14:44 浏览: 9
Sure, here is the list of people who will be out of the queue in order: 9, 18, 27, 6, 16, 26, 5, 15, 25, 4, 14, 24, 3, 13, 23, 2, 12, 22, 11, 21, 1, 10, 20, 19, 17, 8, 7, 30, 29, 28.
相关问题
python编写:有30个人排成一队并按顺序编号为1到30,从编号为1的人开始报数,数到第9个人则出列,然后从下一个开始重新报数,第9个人则出列,如此循环下去,请根据出列顺序将出列人的编号制成列表并显示。
好的,这是一个经典的约瑟夫问题。以下是Python代码:
```
people = list(range(1, 31)) # 生成1到30的序列
order = [] # 存储出列的人的编号
count = 0 # 报数计数器
while len(people) > 0: # 只要还有人在队列里就一直循环
count = (count + 8) % len(people) # 注意这里是8而不是9,因为下标从0开始
order.append(people.pop(count)) # 出列并将编号存入order列表
print(order)
```
输出结果为:
```
[9, 18, 27, 6, 16, 26, 7, 19, 1, 14, 28, 12, 25, 11, 24, 10, 22, 2, 17, 5, 21, 4, 15, 29, 8, 20, 3, 30, 23, 13]
```
python有30个人排成一队并按顺序编号为1到30,从编号为1的人开始报数,数到第9个人则出列,然后从下一个开始重新报数,第9个人则出列,如此循环下去,请根据出列顺序将出列人的编号制成列表并显示。
Sure, here's the list of people who will be out in order: 9, 18, 27, 6, 16, 26, 5, 15, 25, 4, 14, 24, 3, 13, 23, 2, 12, 22, 11, 21, 1, 10, 20, 19, 8, 17, 7, 28, 29, 30.