#126. 约瑟夫环
约瑟夫环
说明
约瑟夫问题是一个经典的数学问题:
有 n 个人围成一圈,从第 1 个人开始报数,报到 m 的人出列,然后从出列的下一个人继续从 1 开始报数……如此反复,直到所有人出列为止。
现在给定 n 和 m,请你按出列顺序输出每个人的编号(编号从 1 到 n),每行一个。
输入格式
一行,两个整数 n 和 m,用空格隔开。- n:总人数()
- m:报数值()
输出格式
n 行,每行一个整数,按出列顺序依次输出编号。5 33
1
5
2
4
提示
用列表模拟环形结构。维护一个当前位置 pos,每次计算:
pos = (pos + m - 1) % len(list)→ 找到要出列的人- 弹出该位置的人并输出
- 循环直到列表为空
注意 pos 不用 +1 是因为弹出后列表自动缩短,下一个人自然到了当前位置。