package edu.princeton.cs.excercise.ch1;
import edu.princeton.cs.algs4.ch13.Queue;
import edu.princeton.cs.introcs.StdOut;
/*************************************************************************
* Compilation: javac Josephus.java
* Execution: java Josephus M N
* Dependencies: Queue.java
*
* Solves the Josephus problem.
*
* % java Josephus 2 7
* 1 3 5 0 4 2 6
*
*************************************************************************/
public class Josephus {
public static void main(String[] args) {
int M = Integer.parseInt(args[0]);
int N = Integer.parseInt(args[1]);
// initialize the queue
Queue<Integer> q = new Queue<Integer>();
for (int i = 0; i < N; i++)
q.enqueue(i);
while (!q.isEmpty()) {
for (int i = 0; i < M-1; i++)
q.enqueue(q.dequeue());
StdOut.print(q.dequeue() + " ");
}
StdOut.println();
}
}