题目
题目描述
n 个人的编号是 1 ~ n,如果他们依编号按顺时针排成一个圆圈,从编号是 1 的人开始顺时针报数。
(报数是从 1 报起)当报到 kk 的时候,这个人就退出游戏圈。下一个人重新从 1 开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。
本题目就是已知 n,k的情况下,求最后剩下的人的编号。
输入描述
输入是一行,2 个空格分开的整数 n, k(0 < n,k < 10^7)。
输出描述
要求输出一个整数,表示最后剩下的人的编号。
输入输出样例
示例
输入
10 3
输出
4
总结
可以列表找规律→摘自这个博主的
注意,这里的旧环就是进行一轮(踢掉编号为4的人)之后的环,新环是按照上面的方法把剩下的8人进行重新编号(1~8),且让原来编号为5的人现在新的编号为1,原来编号为6的人现在编号为2(依此类推)。
这样新环的编号既解决了旧环编号不连续的问题,又解决了新编号与旧编号之间一一映射的关系,即 ( 旧 的 编 号 ) = [ ( 新 的 编 号 ) + m ] % ( 旧 的 人 数 n )
PASS代码
#