问题 6310 --谁留到最后?

6310: 谁留到最后?★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 76  解决: 47
[提交][状态][命题人:]

题目描述

共有n名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 1n编号。确切的说,从第i名小伙伴顺时针移动一位会到达第(i+1)名小伙伴的位置,其中1<=i<n,从第n名小伙伴顺时针移动一位会回到第1名小伙伴的位置。

游戏规则如下:

1.     从第1名小伙伴所在位置开始。

2.     沿着顺时针方向数k名小伙伴,计数时需要包含起始时的那位小伙伴。逐个绕圈进行计数,一些小伙伴可能会被数过不止一次。

3.     你数到的最后一名小伙伴需要离开圈子,并视作输掉游戏。

4.     如果圈子中仍然有不止一名小伙伴,从刚刚输掉的小伙伴的顺时针下一位小伙伴开始,回到步骤2继续执行。

5.     否则,圈子中最后一名小伙伴赢得游戏。

输入

输入:给你参与游戏的小伙伴总数n,和一个整数k1<=k<=n<=500

输出

输出游戏的获胜者编号。
样例输入
Copy
5 2
样例输出
Copy
3

提示

游戏运行步骤如下:

1) 从小伙伴 1 开始。
2) 顺时针数 2 名小伙伴,也就是小伙伴 1 和 2 。
3) 小伙伴 2 离开圈子。下一次从小伙伴 3 开始。
4) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 4 。
5) 小伙伴 4 离开圈子。下一次从小伙伴 5 开始。
6) 顺时针数 2 名小伙伴,也就是小伙伴 5 和 1 。
7) 小伙伴 1 离开圈子。下一次从小伙伴 3 开始。
8) 顺时针数 2 名小伙伴,也就是小伙伴 3 和 5 。
9) 小伙伴 5 离开圈子。只剩下小伙伴 3 。所以小伙伴 3 是游戏的获胜者。

来源

[提交][状态]