#5258. 霸王龙的食物游戏

霸王龙的食物游戏

题目背景

在一片远古森林中,n只霸王龙按编号顺序围成一圈,它们各自拥有一定数量的食物。为了决定生存者,这些霸王龙约定进行一场特殊的报数游戏:通过轮流报数,报到特定数字的霸王龙需要吃掉自己的一份食物;当某只霸王龙的食物耗尽时,它将立即退出游戏。这场游戏将持续到最后只剩下一只霸王龙,它便是最终的胜利者。

题目描述

有n只霸王龙,编号依次为1, 2, 3, ..., n,它们按编号顺时针方向围成一个圆圈,初始时所有霸王龙均处于游戏中。每只霸王龙拥有a[i]份食物(i为霸王龙的编号,1 ≤ i ≤ n)。游戏规则如下:

  1. 报数起始与顺序:游戏从编号为1的霸王龙开始,当前处于游戏中的霸王龙按顺时针方向轮流报数,报出的数字是连续的正整数(例如:第1只报数的龙报“1”,下一只报“2”,再下一只报“3”,以此类推)。
  2. 食物消耗规则:当某只霸王龙报出的数字恰好等于m时,该霸王龙必须吃掉自己的1份食物(即其食物数量a[i]减少1)。
  3. 退出游戏条件:若某只霸王龙在吃掉1份食物后,其食物数量变为0,则该霸王龙立即退出游戏,不再参与后续的报数和任何操作。
  4. 下一轮报数衔接:每次有霸王龙报出数字m并完成食物消耗(或退出)后,下一轮报数将从该霸王龙的下一只处于游戏中的霸王龙开始(按顺时针方向),且报出的数字为上一轮最后一个报数的数字加1(例如:上一轮最后一个报数为k,则下一轮第一个报数为k+1)。
  5. 游戏结束条件:当游戏中只剩下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)。

  1. 报数2(第1个m的倍数)

    • 龙1报1(非倍数,无操作);
    • 龙2报2(是2的倍数):a[2] = 1-1=0 → 龙2退出;
    • 下一轮报数:从龙2的下一只(龙3)开始,报数3。
  2. 报数4(第2个m的倍数)

    • 龙3报3(非倍数,无操作);
    • 龙1报4(是2的倍数):a[1] = 2-1=1;
    • 下一轮报数:从龙1的下一只(龙3)开始,报数5。
  3. 报数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