#401. [R64E]4的倍数

[R64E]4的倍数

时空限制

1S/512M

题目描述

给定一个仅包含数字字符的字符串 SS 以及一个正整数 kk

请你求出,在 SS 的所有长度为 kk 的子序列中,有多少个子序列组成的数字是 44 的倍数?

由于答案可能很大,将答案对 109+710^9 + 7 取模。

注意:

  1. 允许存在前导 00。例如,子序列 "04" 对应的数值为 44,它是 44 的倍数;子序列 "00" 对应的数值为 00,它也是 44 的倍数。
  2. 两个子序列不同,当且仅当它们选择的字符在原字符串中的下标不同。

格式

输入格式

第一行包含两个整数 nnkk,分别表示字符串 SS 的长度以及待求子序列的长度。 第二行包含一个长度为 nn 且仅由数字字符('0'-'9')组成的字符串 SS

输出格式

输出一个整数,表示满足条件的子序列个数对 109+710^9 + 7 取模后的结果。

样例

样例输入 #1

4 2
1234

样例输出 #1

2

样例解释 #1

字符串 S=1234S = 1234,需要求长度为 22 的子序列。所有长度为 22 的子序列及其对应数值如下:

  • 下标 {1,2}\{1, 2\} 组成的子序列为 "12"(数值 1212),是 44 的倍数。
  • 下标 {1,3}\{1, 3\} 组成的子序列为 "13"(数值 1313),不是 44 的倍数。
  • 下标 {1,4}\{1, 4\} 组成的子序列为 "14"(数值 1414),不是 44 的倍数。
  • 下标 {2,3}\{2, 3\} 组成的子序列为 "23"(数值 2323),不是 44 的倍数。
  • 下标 {2,4}\{2, 4\} 组成的子序列为 "24"(数值 2424),是 44 的倍数。
  • 下标 {3,4}\{3, 4\} 组成的子序列为 "34"(数值 3434),不是 44 的倍数。

共有 22 个满足条件的子序列,因此输出 22

样例输入 #2

4 2
0120

样例输出 #2

3

样例解释 #2

长度为 22 且是 44 的倍数的子序列有:

  • 下标 {1,4}\{1, 4\} 组成的子序列 "00"(数值 00
  • 下标 {2,3}\{2, 3\} 组成的子序列 "12"(数值 1212
  • 下标 {3,4}\{3, 4\} 组成的子序列 "20"(数值 2020

33 个。

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 nn\le
11 2020 1010
22 2020 20002000
33 6060 2×1052\times 10^5

对于 100%100\% 的数据,1kn2×1051 \le k \le n \le 2 \times 10^5。字符串 SS 仅包含字符 '0''9'