/ Vijos / 题库 /

约瑟夫问题[3]

约瑟夫问题[3]

时间限制:1秒  内存限制:256M


【题目描述】

  \(M\) 个人围成一圈,任意指定一个人为其编号为 1,余下的人按顺时针依次编号为 2 到 \(M\) ,其中编号为 \(M\) 的左边是 \(1\),编号为 \(1\) 的右边是 \(M\);其他情况的 \(i(1 <i<M)\) ,其左边是 \(i+1\),右边是 \(i-1\)。
说明
  现在以编号为 \(S(0 < S ≤ M)\) 的人为起点,开始顺时针报数,报到 \(N\) 的人出列;然后以出列人的右边的人为起点,逆时针从 \(1\) 开始报数,报到 \(K\) 的人出列;接着再以出列的人左边的人为起点,顺时针从 \(1\) 开始报数,报到 \(N\) 的人出列……。就这样按顺时针和逆时针方向交替不断报数,直到全部人出列为止。请你输出出列人的编号序列。

【输入格式】

  第一行包含三个整数 \(M,N,K\) 和 \(S(0 <S≤ M)\)。

【输出格式】

  一行,包含 \(M\) 个数,表示出列人先后的编号序列,每两个数之间仅一个空格。

【输入输出样例】

 Input

6 2 3 1

 Output

2 5 1 3 6 4

【数据限制】

  对于 \(100\%\) 的数据满足,\(0 < N,K,M ≤ 20000\)。

【来源】

  Mr.he

信息

ID
1702
难度
9
分类
模拟 | 数据结构 | 队列链表 点击显示
标签
(无)
递交数
2
已通过
1
通过率
50%
被复制
6
上传者