AT_arc060_d [ARC060F] 最良表現
题目描述
设 $x$ 为长度至少为 $1$ 的字符串。对于任意字符串 $y$ 以及大于等于 $2$ 的整数 $k$,如果 $y$ 重复 $k$ 次得到的字符串与 $x$ 不同,则称 $x$ 为*好字符串*。例如,`a`、`bbc`、`cdcdc` 等是好字符串,而 `aa`、`bbbb`、`cdcdcd` 等不是好字符串。
设 $w$ 为长度至少为 $1$ 的字符串。对于由 $m$ 项组成的序列 $F=(\,f_1,\,f_2,\,...,\,f_m)$,如果同时满足以下条件,则称 $F$ 是 $w$ 的*好表示*:
- 对于所有 $i\ (1\leq i\leq m)$,$f_i$ 是好字符串。
- 将 $f_1,\,f_2,\,...,\,f_m$ 按顺序连接起来得到 $w$。
例如,当 $w=$`aabb` 时,$w$ 的好表示共有 $5$ 种:
- $($`aabb`$)$
- $($`a`$,$`abb`$)$
- $($`aab`$,$`b`$)$
- $($`a`$,$`ab`$,$`b`$)$
- $($`a`$,$`a`$,$`b`$,$`b`$)$
在所有 $w$ 的好表示中,项数 $m$ 最小的表示称为 $w$ 的*最优表示*。例如,$w=$`aabb` 的最优表示只有 $($`aabb`$)$ 这一种。
给定字符串 $w$,请你求出以下两项:
- $w$ 的最优表示的项数;
- $w$ 的最优表示的总数对 $1000000007\ (=10^9+7)$ 取模的结果。
保证对于给定的 $w$,一定存在好表示。
输入格式
输入为一行,包含字符串 $w$。
输出格式
输出共两行:
- 第 $1$ 行输出 $w$ 的最优表示的项数。
- 第 $2$ 行输出 $w$ 的最优表示的总数对 $1000000007$ 取模的结果。
说明/提示
### 限制
- $1\leq |w|\leq 500000\ (=5\times 10^5)$
- $w$ 仅由小写英文字母(`a`-`z`)组成。
### 部分分
- 若能正确解决 $1\leq |w|\leq 4000$ 的数据,将获得 $400$ 分。
### 样例解释 2
对于该输入,项数为 $2$ 的最优表示共有如下 $3$ 种:
- $($`b`$,$`cbc`$)$
- $($`bc`$,$`bc`$)$
- $($`bcb`$,$`c`$)$
由 ChatGPT 4.1 翻译