[Home|Training|Problems|Contests|C Language] | [Login|Register] |
Problems Status Rank |
Problem 1366
市长选举
Time Limit: 1000ms
Memory Limit: 65536kb Description
Gameston小镇是一个钟爱游戏的小镇,甚至连他的市长,都每年通过游戏选出来的。在上任市长任期即将达到之际,市长,及多位其他候选人(不少于2位)一起坐在桌前,玩捡石子游戏,谁赢了,谁就是下一任市长。捡石子游戏规则如下,其中n是参与人的数目(含现任市长): 游戏准备: 一张圆桌,一个碗,以及许多鹅卵石。 游戏开始: 首先所有的候选人,分别标上0~n-1,逆时针围坐在圆桌旁,其中现任市长标号为0,其他候选人标号随机确定。然后由选举委员会以秘密的随机规则产生一个随机数字p。最后,向碗中放入p个鹅卵石。然后将碗交给现任市长。 游戏步骤: 当候选人拿到碗之后。假若碗中还有鹅卵石,就取一个放在自己面前,然后把碗递给他右手边的候选人;假若碗中没有鹅卵石,就把自己面前所有的鹅卵石都放在碗中,然后把碗递给他右手边的候选人。 游戏结束: 当候选人拿到碗后,如果碗中还剩一颗鹅卵石,且除自己之外其他所有的候选人面前都没有鹅卵石了,则游戏结束,该候选人获胜。 Gameston小镇的一个数学家通过分析,证明了捡石子游戏一定能在有限的步骤内结束——尽管可能要很久游戏才会结束。但不管怎样,用这个方法总是可以选出市长的。而且运气好的话,市长似乎也可以无限期的连任下去呢。 Input
输入包含多个测试实例。每一个测试样例占一行,每一行有两个整数n和p,两数用一个空格隔开。其中n是总的候选个数(包括现任市长),p是由选举委员会生成的一个随机数。可假设3 <= n <= 50,2 <= p <= 50。在上述情况下,游戏肯定能在1000000(一百万)步内结束。 测试实例的最后以两个0作为结束标志。 Output
输出由多行组成,每一行只有一个整数,是当选的候选人编号。
Sample Input
3 2 3 3 3 50 10 29 31 32 50 2 50 50 0 0 Sample Output
1 0 1 5 30 1 13 |