扩展约瑟夫圈问题:n个人围成一圈,从第k个人开始报数(1≤k≤n)数到m的人出列;下一个人重新从1开始报数,数到m的人再出圈;以此类推,直到所有的人都出圈。请依次输出出圈人的编号。
# -*- coding = utf-8 -*-
# Author:SEMHAQ
# Date:2022年10月14日
# Time:13:12
# File:test.py
# Software:PyCharm
import queue
def josephus(n, m , k):
q = queue.Queue()
for i in range(k, n + 1): # k 到 最后一个 导入
q.put(i)
for i in range(1, k):#第一个到k 导入
q.put(i)
while q.qsize() > 0:
for i in range(m - 1): # 死亡计数,被点到的出列
q.put(q.get())
print(q.get(), end=' ') # 输出出列数
# 主程序开始
n, m, k = map(int, input("输入人数n和报数m及开始报数的人的编号k(空格隔开):").split())
josephus(n, m, k)