AT_agc020_e [AGC020E] Encoding Subsets
题目描述
考虑一种对仅包含 `0` 和 `1` 的字符串进行编码的规则如下:
- 字符串 `0` 和 `1` 分别可以被编码为 `0` 和 `1`。
- 如果字符串 $A$ 和 $B$ 分别可以被编码为 $P$ 和 $Q$,则字符串 $AB$ 可以被编码为 $PQ$。
- 如果字符串 $A$ 可以被编码为 $P$,且 $K \geq 2$ 为正整数,则字符串 $AA\ldots A$(将 $A$ 连续拼接 $K$ 次)可以被编码为 `(`$P$`x`$K$`)`。
例如,字符串 `001001001` 可以被编码为 `001001001`、`00(1(0x2)x2)1`、`(001x3)` 等,还有其他的编码方式。
此外,当满足以下条件时,称字符串 $A$ 是字符串 $B$ 的「子集」:
- $A$ 和 $B$ 长度相等,且都只包含 `0` 和 `1`。
- 对于所有 $A_i$ 为 `1` 的下标 $i$,$B_i$ 也为 `1`。
给定一个只由 `0` 和 `1` 组成的字符串 $S$,请对于 $S$ 的所有子集,分别求出每个子集的编码方法数,并求这些数量的总和对 $998244353$ 取模后的结果。
输入格式
输入通过标准输入给出,如下所示:
> $S$
输出格式
输出 $S$ 的所有子集的编码方法数之和对 $998244353$ 取模的值。
说明/提示
## 限制条件
- $1 \leq |S| \leq 100$
- $S$ 仅包含字符 `0` 和 `1`。
## 样例解释 1
$S$ 的子集有 $4$ 个:
- `011` 可以编码为 `011`、`0(1x2)`。
- `010` 可以编码为 `010`。
- `001` 可以编码为 `001`、`(0x2)1`。
- `000` 可以编码为 `000`、`0(0x2)`、`(0x2)0`、`(0x3)`。
因此,所有子集的编码方法数总和为 $2 + 1 + 2 + 4 = 9$。
## 样例解释 2
本例中 $S$ 仅有 $1$ 个子集,其编码方式有 $10$ 种。
## 样例解释 4
不要忘记,最后的答案需要对 $998244353$ 取模。
由 ChatGPT 5 翻译