#ATagc020e. [AGC020E] Encoding Subsets

[AGC020E] Encoding Subsets

题目描述

考虑一种对仅包含 01 的字符串进行编码的规则如下:

  • 字符串 01 分别可以被编码为 01
  • 如果字符串 AABB 分别可以被编码为 PPQQ,则字符串 ABAB 可以被编码为 PQPQ
  • 如果字符串 AA 可以被编码为 PP,且 K2K \geq 2 为正整数,则字符串 AAAAA\ldots A(将 AA 连续拼接 KK 次)可以被编码为 (PPxKK)

例如,字符串 001001001 可以被编码为 00100100100(1(0x2)x2)1(001x3) 等,还有其他的编码方式。

此外,当满足以下条件时,称字符串 AA 是字符串 BB 的「子集」:

  • AABB 长度相等,且都只包含 01
  • 对于所有 AiA_i1 的下标 iiBiB_i 也为 1

给定一个只由 01 组成的字符串 SS,请对于 SS 的所有子集,分别求出每个子集的编码方法数,并求这些数量的总和对 998244353998244353 取模后的结果。

输入格式

输入通过标准输入给出,如下所示:

SS

输出格式

输出 SS 的所有子集的编码方法数之和对 998244353998244353 取模的值。

样例 1

输入

011

输出

9

样例 2

输入

0000

输出

10

样例 3

输入

101110

输出

156

样例 4

输入

001110111010110001100000100111

输出

363383189

说明/提示

限制条件

  • 1S1001 \leq |S| \leq 100
  • SS 仅包含字符 01

样例解释 1

SS 的子集有 44 个:

  • 011 可以编码为 0110(1x2)
  • 010 可以编码为 010
  • 001 可以编码为 001(0x2)1
  • 000 可以编码为 0000(0x2)(0x2)0(0x3)

因此,所有子集的编码方法数总和为 2+1+2+4=92 + 1 + 2 + 4 = 9

样例解释 2

本例中 SS 仅有 11 个子集,其编码方式有 1010 种。

样例解释 4

不要忘记,最后的答案需要对 998244353998244353 取模。

由 ChatGPT 5 翻译