约瑟夫问题[3]

测试数据来自 system/1702

作业已超过截止时间,您无法递交本题目。

时间限制: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

变长数组与双端队列练习题

未认领
状态
已结束
题目
8
开始时间
2024-03-08 00:00
截止时间
2024-04-06 23:59
可延期
24.0 小时