#3900. [USACO25OPEN] Moo Decomposition G

[USACO25OPEN] Moo Decomposition G

P12028 [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≤N≤1061 \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 取模。

输入输出样例 #1

输入 #1

2 6 1
MOOMOO

输出 #1

1

输入输出样例 #2

输入 #2

2 6 1
MMOOOO

输出 #2

6

输入输出样例 #3

输入 #3

1 4 2
MMOO

输出 #3

4

输入输出样例 #4

输入 #4

1 4 100
MMOO

输出 #4

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:无额外限制。