#CSP1200. 不循环分割 (partition)

    ID: 4555 Type: Default File IO: partition 1000ms 32MiB Tried: 17 Accepted: 0 Difficulty: 10 Uploaded By: Tags>CSP-S复赛模拟国庆集训

不循环分割 (partition)

题目描述

请注意本题的空间限制。

小 Y 对字符串很感兴趣,他定义一个长度为 nn 的字符串 SS (下标为 0,1,,n10,1,\dots,n-1)是循环的,当且仅当符合以下条件:

  • 字符串 SS 的长度大于 11 ,即 n>1n>1,并且

  • 存在某个正整数 k[1,n)k\in [1,n),满足 kknn 的约数,并且对于任意的 i[0,n)i\in [0,n) 都有 Si=SimodkS_i=S_{i\mod k}

这里 SiS_i 表示字符串 SS 中下标为 ii 的字符。

小 Z 也对字符串很感兴趣,他定义一个长度为 nn 的字符串 SS 的划分为数列 {p1,p2,,pk}(k2)\{p_1, p_2, \cdots , p_k\} (k \ge 2),满足 p1=0,pk=np_1=0,p_k=n,且对于任意 i[2,k]i\in [2,k] 都有 pi>pi1p_i>p_{i-1}。这样可以看作把字符串 SS 划分成了若干段,每一段的形式为第 pip_i 个字符到第 pi+11p_{i+1}-1 个字符。两个分割不同,当且仅当对应的数列不同。

小 Y 和小 Z 一拍即合,定义了不循环分割。称一个分割是不循环分割,当且仅当分割中的每一段都不是循环的。现在他俩想知道,给定字符串 SS,有多少种不同的不循环分割?答案对 998244353998244353 取模。

输入格式

partition.in 文件读入数据。

一行一个小写字母构成的字符串 SS

输出格式

输出到 partition.out 文件。

输出一个整数,代表答案,对 998244353998244353 取模。

样例 1

aab
3

对于样例 1,三种可能的划分是:

  1. {0, 1, 2, 3} , 被分成了’a’ + ’a’ + ’b’ 。
  2. {0, 1, 3} , 被分成了 ’a’ + ’ab’ 。
  3. {0, 3} , 整串保留,作为一种划分。

样例 2

点击链接 ex_partition2.inex_partition2.out 下载大样例 2 的输入数据和输出数据。

数据范围

对于每个测试点, 字符串 SS 的长度不超过 5×1035\times 10^3

子任务 分数 附加约束条件
11 1010 SS 全部由 ‘a' 构成
22 4040 SS 的长度不超过 100100
33 5050 无附加限制