SP3008 RPS - Finding the Top RPS Player
题目描述
一家名为「ACM Foods」的公司计划在某区域开设连锁店,但同时另一家公司「ICPC Pizza」也想在该地区设立分店。通常来说,彼此竞争的店铺如果位置过近,收入会因此减少。因此,双方商议后达成协议,只有其中一家可以在这一区域开店。他们决定用石头剪刀布(RPS)的方式来决定哪一家胜出。
由于「ACM Foods」当前面临财务困难,非常希望能够成功开设新店,公司高管决定竭力寻找到一位石头剪刀布的高手。他们认为如果一个选手能够连续获胜,那他一定实力超群。为了保证找到这样的选手,他们制定了一个策略。
在这个策略中,许多选手不断进行石头剪刀布的比赛,但比赛仅在连胜次数相同的选手之间进行。起初,所有选手都没有胜利记录,因此任意两名选手都可以对战。多场比赛可以同时进行,称为一轮。在第一轮后,一些选手会获得一次胜利,而其他选手仍然没有胜利。第二轮中,有获胜一次的选手会互相比赛,而没有胜利的选手也进行比赛。对于前一种情况,胜者将实现两次连胜,败者将失去之前的胜利,变为没有连胜。对于后一种情况,胜者会获得一次胜利,而败者仍然没有胜利。因此,在第二轮后,选手会被分为三个组:两次连胜、一次连胜和没有胜利的选手。第三轮及后续轮次按照同样方式进行。经过足够多的轮次后,应该会出现一名连续获胜 M 次的选手。
这样的策略是否显得疯狂?可能是由于财务困难让他们感到困惑。当然,这一策略需要进行大量比赛。高管们希望你作为「ACM Foods」的一名员工,估算这一策略需要多少时间。你的任务是编写程序,以计算出在 N 名选手中找到一名具有 M 次连胜所需的最少轮数。
输入格式
输入包含多个测试用例。每个测试用例在一行中给出两个整数 $N$($2 \leq N \leq 20$)和 $M$($1 \leq M < N$)。
输入以一行 "0 0" 结束。
输出格式
对于每个测试用例,程序需要输出结果,形式为:“Case x: y”,其中 x 为测试用例编号,y 为找到具有 M 次连胜所需的最少轮数。
**本翻译由 AI 自动生成**