题目描述
n 个人的编号是 1 ~ n,如果他们依编号按顺时针排成一个圆圈,从编号是 1 的人开始顺时针报数。
(报数是从 1 报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从 1 开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。
本题目就是已知 n,k 的情况下,求最后剩下的人的编号。
输入描述
输入是一行,2 个空格分开的整数
要求输出一个整数,表示最后剩下的人的编号。
输入输出样例
示例
输入
10 3
输出
4
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
题解:
递归,递归是重复缩小问题规模,最后得到结果。
最开始有n人,报到k,减少一人,n-1,n-2,... 2 , 1
举个例子更好的理解递推公式
n=4,k=2
1 2 3 4
从1开始,到2 (1+2-1)%4
从3开始,到4 (3+2-1)%4
从1开始,到3 (1+2-1)%4
最后1
(i+k-1)%n