#B1461. 数字串切割

数字串切割

【题目描述】

给定一个长度为 nn 的字符串 ss,ss 只由数字字符 0 到 9 组成。

你需要将 ss 从左到右切割成若干段,每一段都是 ss 的一个非空连续子串。

每一段按照十进制整数理解,要求每一段组成的整数都不超过 MM。

一段数字可以包含前导 0,例如 007 组成的整数为 77。

请输出最少需要切割成多少段。


【输入描述】

第一行输入两个整数 n,Mn,M。

第二行输入一个长度为 nn 的数字字符串 ss。

保证:

  • 1≤n≤10001\le n\le 1000;
  • 1≤M≤1091\le M\le 10^9;
  • ss 的长度为 nn;
  • ss 只包含字符 0 到 9;
  • 保证至少存在一种合法切割方案。

【输出描述】

输出一行一个整数,表示最少需要切割成的段数。


【样例 1】

【样例 1 输入】

7 1000
1002003

【样例 1 输出】

3

【样例 1 解释】

可以切割为 100|200|3,每段组成的整数都不超过 10001000。


【样例 2】

【样例 2 输入】

8 120
12304567

【样例 2 输出】

4

【样例 2 解释】

可以切割为 12|30|45|67,每段组成的整数都不超过 120120。


【样例 3】

【样例 3 输入】

23 5000
12000499905000123400007

【样例 3 输出】

5

【样例 3 解释】

一种最优切割为 12|000499|905|0001234|00007。

其中 000499、0001234 和 00007 都带有前导零,但它们组成的整数分别为 499499、12341234 和 77,前导零不影响数字数值大小。