约瑟夫环代码简短,简单但可读性变难。
题目描述:
一共有n个人,依次报数,报到k的人被淘汰,第k+1个人又从1开始,最后留下的人的编号。
示例1:
输入(8,3)
输出 7
最后12345678中的第7编号留下;
示例2:
输入(1,3)
输出 1
当为1个人时,无论怎么报数,已经是最后留下的人
简单说明原理:
我们可以用数组和链表模拟游戏过程,得出结果,但这里只需结果,无需过程,所以用数学方法;
(案例为5个人报数,报到3的排除)
原编号 |
1 |
2 |
3 |
4 |
5 |
排除 |
1 |
2 |
|
4 |
5 |
新编号① |
3 |
4 |
|
1 |
2 |
排除 |
|
4 |
|
1 |
2 |
新编号② |
</ |