题目描述
给定一个由 M 和 O 组成的长字符串 S 和一个整数 K≥1。计算将 S 分解为若干子序列的方式数,其中每个子序列形如 MOOO...O(恰好包含 K 个 O),结果对 109+7 取模。
由于字符串非常长,我们不直接给出 S。而是给定一个整数 L(1≤L≤1018)和一个长度为 N 的字符串 T(1≤N≤106)。字符串 S 是 T 重复 L 次拼接而成。
输入格式
第一行包含 K、N 和 L。
第二行包含长度为 N 的字符串 T,每个字符是 M 或 O。
保证 S 的分解方式数不为零。
输出格式
输出字符串 S 的分解方式数,对 109+7 取模。
2 6 1
MOOMOO
1
2 6 1
MMOOOO
6
1 4 2
MMOO
4
1 4 100
MMOO
976371285
提示
样例一解释:唯一分解方式是将前三个字符组成一个 MOO,后三个字符组成另一个 MOO。
样例二解释:共有六种不同的分解方式(大写字母组成一个 MOO,小写字母组成另一个 MOO):
- MmOOoo
- MmOoOo
- MmOooO
- MmoOOo
- MmoOoO
- MmooOO
样例四解释:注意:结果需对 109+7 取模。
- 测试点 5∼7:K=1,L=1。
- 测试点 8∼10:K=2,N≤1000,L=1。
- 测试点 11∼13:K=1。
- 测试点 14∼19:L=1。
- 测试点 20∼25:无额外限制。