#P708. 约瑟夫的新问题
约瑟夫的新问题
问题描述
将1~M这M个自然数按由小到大的顺序沿顺时针方向围成一圈。以S为起点,先沿顺时针方向数到第N个数就出圈,然后再沿逆时针方向数到第K个数再出圈,再沿顺时针方向数到第N个数就出圈,然后再沿逆时针方向数到第K个数再出圈,……。这样按顺时针方向和逆时针方向不断出圈,直到全部数都出圈为止。
请打印先后出圈的数的序列。
输入格式
文件中共4行,每行为一个自然数,分别表示M,S,N,K。M不超过1000。
输出格式
仅1行,先后出圈的数的序列,每个数之间有1个空格。
样例输入(jsf.in)
8
1
3
2
样例输出(jsf.out)
3 1 5 2 7 4 6 8
(解释:先从1开始沿顺时针方向数到3,所以3先出圈;再从2开始沿逆时针方向数到1,所以1出圈;再从2开始沿顺时针方向数到5,所以5出圈,再从4开始沿逆时针方向数到2,所以2出圈,……)