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