luogu#P12028. [USACO25OPEN] Moo Decomposition G

[USACO25OPEN] Moo Decomposition G

题目描述

给定一个由 M\texttt{M}O\texttt{O} 组成的长字符串 SS 和一个整数 K1K \geq 1。计算将 SS 分解为若干子序列的方式数,其中每个子序列形如 MOOO...O\texttt{MOOO...O}(恰好包含 KKO\texttt{O}),结果对 109+710^9+7 取模。

由于字符串非常长,我们不直接给出 SS。而是给定一个整数 LL1L10181 \leq L \leq 10^{18})和一个长度为 NN 的字符串 TT1N1061 \leq N \leq 10^6)。字符串 SSTT 重复 LL 次拼接而成。

输入格式

第一行包含 KKNNLL

第二行包含长度为 NN 的字符串 TT,每个字符是 M\texttt{M}O\texttt{O}

保证 SS 的分解方式数不为零。

输出格式

输出字符串 SS 的分解方式数,对 109+710^9+7 取模。

2 6 1
MOOMOO
1
2 6 1
MMOOOO
6
1 4 2
MMOO
4
1 4 100
MMOO
976371285

提示

样例一解释:唯一分解方式是将前三个字符组成一个 MOO\texttt{MOO},后三个字符组成另一个 MOO\texttt{MOO}

样例二解释:共有六种不同的分解方式(大写字母组成一个 MOO\texttt{MOO},小写字母组成另一个 MOO\texttt{MOO}):

  1. MmOOoo\texttt{MmOOoo}
  2. MmOoOo\texttt{MmOoOo}
  3. MmOooO\texttt{MmOooO}
  4. MmoOOo\texttt{MmoOOo}
  5. MmoOoO\texttt{MmoOoO}
  6. MmooOO\texttt{MmooOO}

样例四解释:注意:结果需对 109+710^9+7 取模。

  • 测试点 575\sim7K=1K=1L=1L=1
  • 测试点 8108\sim10K=2K=2N1000N \leq 1000L=1L=1
  • 测试点 111311\sim13K=1K=1
  • 测试点 141914\sim19L=1L=1
  • 测试点 202520\sim25:无额外限制。