AT_bcu30_a すごろく
题目描述
在 Cybozu 员工之间,双六游戏流行起来了。
员工们玩的这款双六有 $N+1$ 个格子,每个格子按照前进的顺序依次编号为 $0, 1, \ldots, N$。起点的编号为 $0$,终点的编号为 $N$。
为了熟悉这款双六,你正在一个人练习移动棋子。在实际移动棋子之前,你先决定了 $K$ 回合每回合前进的格数 $a_i\ (1\leq i\leq K)$,并将棋子放在了起点。
你将按照如下规则实际移动棋子:
第 $i$ 回合 $(1\leq i\leq K)$ 的操作:
- 如果向前移动 $a_i$ 格后仍未到达终点,则前进 $a_i$ 格。
- 如果恰好前进 $a_i$ 格能到达终点,则前进 $a_i$ 格到达终点,并立即结束游戏,不继续后续回合。
- 如果前进少于 $a_i$ 格即可到达终点,则先正好前进达到终点,然后后退 $a_i - x$ 格(其中 $x$ 为距离终点的剩余格数)。
给定 $N$、$K$ 以及每回合前进的格数 $a_i$,请输出最终(在 $K$ 回合全部结束,或中途到达终点且结束游戏后)棋子所在的格子编号。
输入格式
输入格式如下:
> $N\ K\ a_1\ a_2\ \ldots\ a_K$
输出格式
请输出棋子最后停留的格子编号。
说明/提示
### 数据范围
- $1\leq N\leq 10^9$
- $1\leq K\leq 1000$
- $1\leq a_i\leq N$ $(1\leq i\leq K)$
### 样例解释 1
一开始棋子放在 $0$。
- 第 $1$ 回合出 $5$,棋子移动到 $5$。
- 第 $2$ 回合出 $7$,棋子移动到 $10$,因为还有 $2$ 格可以行动,所以再退回到 $8$。
- 第 $3$ 回合出 $2$,棋子移动到 $10$,此时刚好到达终点,移动结束。
最终棋子停在 $10$。
由 ChatGPT 5 翻译