#5258. 霸王龙的食物游戏
霸王龙的食物游戏
题目背景
在一片远古森林中,n只霸王龙按编号顺序围成一圈,它们各自拥有一定数量的食物。为了决定生存者,这些霸王龙约定进行一场特殊的报数游戏:通过轮流报数,报到特定数字的霸王龙需要吃掉自己的一份食物;当某只霸王龙的食物耗尽时,它将立即退出游戏。这场游戏将持续到最后只剩下一只霸王龙,它便是最终的胜利者。
题目描述
有n只霸王龙,编号依次为1, 2, 3, ..., n,它们按编号顺时针方向围成一个圆圈,初始时所有霸王龙均处于游戏中。每只霸王龙拥有a[i]份食物(i为霸王龙的编号,1 ≤ i ≤ n)。游戏规则如下:
- 报数起始与顺序:游戏从编号为1的霸王龙开始,当前处于游戏中的霸王龙按顺时针方向轮流报数,报出的数字是连续的正整数(例如:第1只报数的龙报“1”,下一只报“2”,再下一只报“3”,以此类推)。
- 食物消耗规则:当某只霸王龙报出的数字恰好等于m时,该霸王龙必须吃掉自己的1份食物(即其食物数量a[i]减少1)。
- 退出游戏条件:若某只霸王龙在吃掉1份食物后,其食物数量变为0,则该霸王龙立即退出游戏,不再参与后续的报数和任何操作。
- 下一轮报数衔接:每次有霸王龙报出数字m并完成食物消耗(或退出)后,下一轮报数将从该霸王龙的下一只处于游戏中的霸王龙开始(按顺时针方向),且报出的数字为上一轮最后一个报数的数字加1(例如:上一轮最后一个报数为k,则下一轮第一个报数为k+1)。
- 游戏结束条件:当游戏中只剩下1只霸王龙时,游戏立即结束,输出这只霸王龙的编号。
请你根据上述规则,计算并输出最后剩下的霸王龙的编号。
输入格式
第一行:两个正整数n和m,分别表示初始霸王龙的数量、需要执行食物消耗操作的报数数字。 第二行:n个正整数,第i个正整数表示编号为i的霸王龙初始拥有的食物数量a[i](1 ≤ i ≤ n)。
输出格式
一行一个正整数,表示最后剩下的霸王龙的编号。
样例输入1
3 2
2 1 3
样例输出1
3
样例解释
为了清晰展示游戏过程,我们按轮次拆解样例1的执行步骤(初始状态:龙1(a=2)、龙2(a=1)、龙3(a=3)均在游戏中,报数从龙1开始):
初始状态:龙1(a=2)、龙2(a=1)、龙3(a=3),报数从龙1开始(报1)。
-
报数2(第1个m的倍数):
- 龙1报1(非倍数,无操作);
- 龙2报2(是2的倍数):a[2] = 1-1=0 → 龙2退出;
- 下一轮报数:从龙2的下一只(龙3)开始,报数3。
-
报数4(第2个m的倍数):
- 龙3报3(非倍数,无操作);
- 龙1报4(是2的倍数):a[1] = 2-1=1;
- 下一轮报数:从龙1的下一只(龙3)开始,报数5。
-
报数6(第3个m的倍数):
- 龙3报5(非倍数,无操作);
- 龙1报6(是2的倍数):a[1] = 1-1=0 → 龙1退出;
- 此时游戏中仅剩龙3,输出3。
数据范围
| 数据点占比 | n的范围 | m的范围 | a[i]的范围 |
|---|---|---|---|
| 30% | 1 ≤ n ≤ 10 | 1 ≤ m ≤ 5 | 1 ≤ a[i] ≤ 10 |
| 100% | 1 ≤ n ≤ 100 | 1 ≤ m ≤ 100 | 1 ≤ a[i] ≤ 100 |