题解
#include<bits/stdc++.h>
using namespace std;
// #define int long long
#define ll long long
const int maxn = 6e6 + 5;
const int mod = 998244353;
int fail[maxn];//fail[i]表示i结点代表的回文串的最大回文后缀的编号
int len[maxn]; //len[i]表示结点i代表的回文串的长度
int trie[maxn][26], tot = 1;//tot初始为1!!!!
int cnt[maxn];//结点i代表的回文串出现了多少次
int ind[maxn];
string s;
int get(int x, int i){//x是以s[i-1]结尾的回文串,返回以s[i-1]结尾且s[i-len[x]-1]==s[i]的回文串的对应结点编号
while(i - len[x] - 1 < 0 || s[i - len[x] - 1] != s[i