P12028 [USACO25OPEN] Moo Decomposition G

题目描述

给定一个由 $\texttt{M}$ 和 $\texttt{O}$ 组成的长字符串 $S$ 和一个整数 $K \geq 1$。计算将 $S$ 分解为若干子序列的方式数,其中每个子序列形如 $\texttt{MOOO...O}$(恰好包含 $K$ 个 $\texttt{O}$),结果对 $10^9+7$ 取模。 由于字符串非常长,我们不直接给出 $S$。而是给定一个整数 $L$($1 \leq L \leq 10^{18}$)和一个长度为 $N$ 的字符串 $T$($1 \leq N \leq 10^6$)。字符串 $S$ 是 $T$ 重复 $L$ 次拼接而成。

输入格式

第一行包含 $K$、$N$ 和 $L$。 第二行包含长度为 $N$ 的字符串 $T$,每个字符是 $\texttt{M}$ 或 $\texttt{O}$。 保证 $S$ 的分解方式数不为零。

输出格式

输出字符串 $S$ 的分解方式数,对 $10^9+7$ 取模。

说明/提示

样例一解释:唯一分解方式是将前三个字符组成一个 $\texttt{MOO}$,后三个字符组成另一个 $\texttt{MOO}$。 样例二解释:共有六种不同的分解方式(大写字母组成一个 $\texttt{MOO}$,小写字母组成另一个 $\texttt{MOO}$): 1. $\texttt{MmOOoo}$ 2. $\texttt{MmOoOo}$ 3. $\texttt{MmOooO}$ 4. $\texttt{MmoOOo}$ 5. $\texttt{MmoOoO}$ 6. $\texttt{MmooOO}$ 样例四解释:注意:结果需对 $10^9+7$ 取模。 - 测试点 $5\sim7$:$K=1$,$L=1$。 - 测试点 $8\sim10$:$K=2$,$N \leq 1000$,$L=1$。 - 测试点 $11\sim13$:$K=1$。 - 测试点 $14\sim19$:$L=1$。 - 测试点 $20\sim25$:无额外限制。