要在超长上界 n 下计数,不能枚举。我们结合Aho–Corasick 自动机和数位 DP(Digit DP)来做:
构建复杂度:
给定 m 个可爱数字串,它们仅由 0 ~ 9 这九个数字字符构成,且可能包含前导 0。
你需要求解,在区间 [1,n] 中,有多少个整数满足,可爱度恰好为 1。由于答案可能很大,请将答案对 (109+7) 取模后输出。在这里,一个整数的可爱度定义为:
取出一段连续的数位,如果这段数位恰好是给定的 m 个可爱数字串中的一个或多个(完全匹配),则可爱度加上这个匹配的次数;
对于同一段连续的数位,仅计算一次可爱度。
举例说明,如果有两个可爱串,分别是 1110 和 111,那么 21110 可爱度不为 1,因为它同时包含了两个可爱串;1111 的可爱度为 2,因为包含了两次 111。
第一行输入两个整数 n,m(1≤n≤101000;1≤m≤1000),表示询问区间的范围、给定的可爱数字串的数量。
接下来的 m 行,每行输入一个长度不超过 103、仅由 0 ~ 9 这十个数字字符构成的数字串 s,代表一个可爱数字串。可能包含前导 0。
除此之外,保证单个测试文件给出的 s 的字符数量之和不超过 103。
输出一个整数,表示在区间 [1,n] 中可爱度恰好为 1 的数字个数。由于答案可能很大,请输出答案对 109+7 取模后的结果。
输入
2000 2
1110
111
输出
9
说明
在区间 [1,2000] 中,可爱度恰好为 1 的数字有 111,1112,1113,1114,1115,1116,1117,1118,1119,一共 9 个。
输入
1120 2
111
111
输出
0