#P12028. [USACO25OPEN] Moo Decomposition G

    ID: 13717 远端评测题 2000ms 256MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>字符串USACO2025组合数学逆元

[USACO25OPEN] Moo Decomposition G

题目描述

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

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

输入格式

第一行包含 KK、NN 和 LL。

第二行包含长度为 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 取模。

  • 测试点 5∼75\sim7:K=1K=1,L=1L=1。
  • 测试点 8∼108\sim10:K=2K=2,N≤1000N \leq 1000,L=1L=1。
  • 测试点 11∼1311\sim13:K=1K=1。
  • 测试点 14∼1914\sim19:L=1L=1。
  • 测试点 20∼2520\sim25:无额外限制。