题目描述
n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。
输入格式
输入两个整数 n,m
输出格式
输出一行 n 个整数,按顺序输出每个出圈人的编号。
原因分析:
本题采用队列的数据结构,先进后出。
从第一个人一次报数,如果报的数字不是m,则排到队尾
如果是m,则出队,去另一个队列
AC代码:
附上AC代码
n, m = map(int, input().split())
peo = [i for i in range(1, n+1)]
ple = []
i = 0
while peo:
i += 1
p = peo.pop(0)
if i == m:
ple.append(p)
i = 0
else:
peo.append(p)
for i in ple:
print(i,end = " ")
总结学习:
数据结构应该继续学习,了解和熟悉程度不够