atcoder#AGC020E. [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
组成的字符串 。找出所有 的子集的不同编码总数,结果对 取模。
约束条件
- 由
0
和1
组成。
输入格式
输入从标准输入中给出,格式如下:
输出格式
输出所有子集的不同编码总数,对 取模。
011
9
对于 的四个子集:
011
可以编码为011
和0(1x2)
;010
可以编码为010
;001
可以编码为001
和(0x2)1
;000
可以编码为000
、0(0x2)
、(0x2)0
和(0x3)
。
因此,所有子集的编码总数为 。
0000
10
这次 只有一个子集,但可以用 种不同的方式编码。
101110
156
001110111010110001100000100111
363383189
不要忘记对结果取模 。