【基础】约瑟夫问题

Time Limit: 8s Memory Limit: 64MB Submissions: 401 Solved: 98 
Description

有M个人,其编号分别为1-M。这M个人按顺序排成一个圈。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。 

Input

输入只有一行,包括2个整数M,N。之间用一个空格分开。

Output

输出只有一行,包括M个整数。

Sample Input
8 5
Sample Output
5 2 8 7 1 4 6 3
Hint

分析:这样一道题用指针的方法解很直观。但用数组的方法也可以做出来。 我们设数组A有M个变量,每个变量中放的数是1。现在计数器K从1开始向后数,每数一个变量则累加器S把变量中的数相加。当数到最后一个变量M时,自动转向第一个变量接着数。当累加器的数到N时,最后一个被加的变量出列(打印其下标值,同时将该变量的值由1变为0),同时累加器的值清零。然后从出列的下一个变量又开始向后累加每个变量的值,直到加到N时,最后一个被加的变量出列......用这种方法不担心出列的变量被重复相加,因为一旦被判出列,该变量的值由1变为0, 即使相加也无妨。