AT_abc249_e [ABC249E] RLE
题目描述
对于仅由小写英文字母组成的字符串 $X$,我们通过以下过程得到一个新的字符串:
- 在 $X$ 中,每当相邻的字符不同,就将其分割开。
- 对于分割得到的每个字符串 $Y$,将其替换为由 $Y$ 所包含的字符和 $Y$ 的长度拼接而成的新字符串。
- 按照原本的顺序,将所有替换后的字符串拼接起来。
例如,对于 `aaabbcccc`,可以分割为 `aaa`、`bb`、`cccc`,分别替换为 `a3`、`b2`、`c4`,按顺序拼接得到 `a3b2c4`。又如,`aaaaaaaaaa` 会变成 `a10`。
现在,给定一个长度为 $N$ 的仅由小写英文字母组成的字符串 $S$,请你计算经过上述过程得到的新字符串 $T$ 的长度比 $S$ 短的所有字符串 $S$ 的个数,并对 $P$ 取模后输出。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $P$
输出格式
请输出答案。
说明/提示
## 限制条件
- $1 \leq N \leq 3000$
- $10^8 \leq P \leq 10^9$
- $N,P$ 均为整数
- $P$ 是质数
## 样例解释 1
只有当第 $1,2,3$ 个字符都相同的字符串才满足条件。例如,`aaa` 会变成 `a3`,满足条件;但 `abc` 会变成 `a1b1c1`,不满足条件。
## 样例解释 2
注意,像 `aa` 变成 `a2` 这样长度相等的情况不满足条件。
## 样例解释 3
像 `aaabb` 或 `aaaaa` 这样的字符串满足条件。
## 样例解释 4
请输出满足条件的字符串个数对 $P$ 取模的结果。
由 ChatGPT 4.1 翻译