QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100
[+5]

# 4057. 子串统计

Statistics

小 D 四岁半的时候学会了后缀自动机。

你有一个字符串 S,长度为 n。初始时,T0=S。每次你可以删除 Ti 的开头或结尾的字符得到新的字符串 Ti+1,经过 n1 次操作之后,我们会得到只有一个字符的串 Tn1,根据每次删除的选择,一共有 2n1 中可能的操作序列。注意,虽然可能会有一次操作,删除开头或结尾的字符得到相同的串,但是我们仍然把它当成两种不一样的操作序列。

对于一个串 T,我们记 occ(T) 表示 TS 中作为子串的出现次数,比如 occ(aaa,aaabaaa)=3

对于一个操作序列,记它的贡献是 n1i=1occ(Ti),求所有操作序列的贡献和,由于答案很大,输出对 998244353 取模的结果。

输入格式

一共一行,包含一个字符串 S,保证 S 只包含小写字符。

输出格式

一行一个整数,表示答案。

样例数据

样例 1 输入

zzz

样例 1 输出

24

样例 2 输入

abbab

样例 2 输出

53

样例 3

见下发文件。

子任务

一共 20 个测试点。

对于测试点 15,满足 |S|5000

对于测试点 68,满足 S 的每个字符从 ab 中等概率独立随机生成。

对于测试点 914,满足 |S|6×104

对于所有数据,1|S|105