简介
约瑟夫环问题是一个古老的问题。假设有n个人围成一个圈,从其中一个人开始以顺时针方向
开始报数,报到数2的人出列,下一个人继续从1开始报。(这会导致这个圈越来越小)直到只剩下
最后一个人为止。
例子:假设又10个人组成一个圈,那么出列的顺序分别是编号为2, 4, 6, 8, 10, 3, 7, 1, 9。
那么第5个人剩下。
现在,我们定义一个函数J(n),自变量n为有n个人围成一个圈,因变量则是剩下的那个人的编号。
则有:J^2(n)=J(J(n)),例如:J^2(10)=J(J(10))=J(5)=3,J^3(n)=J(J(J(n)))
那么问题来了,你能编写一个用于求出J^m(n)的C/C++程序吗?
输入格式:
总共有N组例子
每个例子输入n和m。(0<n,m<10^9)
结束输入的标志是m=n=0
输出格式:
每个例子输出J^m(n)
输入样例
10 2
10 1
20 1
0 0
输出样例
3
5
9
It is not recommended to come here to ask such questions, just ask in the discussion forum
This kind of question will definitely be criticized, but I’ll just give you two pieces of code. After all, everyone is young
1. Array implementation
2. Linked list implementation
The code from a long time ago should be no problem