小Z想制作一个以棋子为主题的游戏,但他在编写代码时遇到了困难。
请你替小Z编写一个程序,解决下面的问题。
有 k 个格子,编号分别为 0、1、2、3 \cdots k-1。初始时所有格子上都没有棋子。
还有一个整数 P,初始时 P=0。
给定一个由正整数组成的数列 A=(A_1, A_2, \dots, A_N),对于 i=1,2,\dots,N,依次进行如下操作:
游戏的每一轮:
1. 在格子 0 上放置 新放置 1 个棋子。
2. 将所有棋子向编号增加 A_i 的格子移动。换句话说,如果某个棋子在格子 x 上,则将其移动到格子 x+A_i 上。
但如果移动后的格子不存在(即 x+A_i \geq k),则将这些棋子移出棋盘,并将被移出的棋子数量加到 P 上。
请输出所有操作结束后 P 的值。
第一行两个数字,K,N表示棋盘的大小和移动的次数;
第二行N个a_i表示每次移动的距离;
移动出去的棋子数量P;
4 4 1 1 3 2
3
4 10 2 2 4 1 1 1 4 2 2 1
8
其中20%的数据:- k=4,1 \leq N \leq 100,1 \leq A_i \leq 4;
另外有40%的数据:- k\leq 1000,1 \leq N \leq 1000,1 \leq A_i \leq 10;
最后的40%数据:- k\leq 1000,1 \leq N \leq 10^6,1 \leq A_i \leq 10^4;
样例解释 1
操作过程如下,操作结束时 P 的值为 3。
- i=1 时的操作
1. 在格子 0 上放置一个棋子。此时格子 0 上有一个棋子。
2. 将所有棋子向前移动 1 个格子。移动后,格子 1 上有一个棋子。
- i=2 时的操作
1. 在格子 0 上放置一个棋子。此时格子 0 和格子 1 上各有一个棋子。
2. 将所有棋子向前移动 1 个格子。移动后,格子 1 和格子 2 上各有一个棋子。
- i=3 时的操作
1. 在格子 0 上放置一个棋子。此时格子 0、1、2 上各有一个棋子。
2. 将所有棋子向前移动 3 个格子。此时,格子 1 和格子 2 上的棋子移动后分别到达 4 和 5,超出了格子范围,因此被移出棋盘,P 增加 2,此时 P=2。移动后,格子 3 上有一个棋子。
- i=4 时的操作
1. 在格子 0 上放置一个棋子。此时格子 0 和格子 3 上各有一个棋子。
2. 将所有棋子向前移动 2 个格子。此时,格子 3 上的棋子移动后到达 5,超出了格子范围,因此被移出棋盘,P 增加 1,此时 P=3。移动后,格子 2 上有一个棋子。
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |