题目描述
教授Pang说了一个字符串s,该字符串s由n个字符组成,每个字符都是英文字母(小写或大写)或数字。字符串s的第i个字符表示为s[i](其中1≤i≤n)。字符串s的一个子序列t被定义为一系列索引t1, ..., t6,满足1≤t1<t2<...<t6≤n。定义函数compare(c1,c2)在两个字符上,当c1=c2时,compare(c1,c2)=1;否则,compare(c1,c2)=0。子序列t是s的一个“namomo子序列”当且仅当对于任意的1≤i<j≤6,都有compare(s[ti],s[tj])=compare(namomo[i],namomo[j]),其中namomo[x]表示字符串"namomo"的第x个字符(其中1≤x≤6)。
输出给定字符串s的“namomo子序列”的数量,结果对998244353取模。
输入格式
第一行包含一个长度为n的字符串s(其中6≤n≤1000000)。字符串s仅包含小写英文字母(a-z)、大写英文字母(A-Z)和数字(0-9)。
输出格式
输出一个整数,即“namomo子序列”的数量对998244353取模的结果。
解释:
题目描述的是,给定一个由小写英文字母、大写英文字母以及数字组成的字符串 s,其长度 n 在 6 到 1000000 之间。我们需要找出这个字符串中所有满足特定条件的子序列的数量,并输出结果模 998244353。
这个特定条件是指,对于任何长度为 6 的子序列 t(通过索引 t1, t2, ..., t6 定义,且 1 ≤ t1 < t2 < ... < t6 ≤ n),如果它满足对于所有的 1 ≤ i < j ≤ 6,都有 compare(s[ti], s[tj]) = compare(namomo[i], namomo[j]),则称这个子序列 t 为一个 namomo 子序列。这里 compare(c1, c2) 是一个比较函数,当 c1 = c2 时返回 1,否则返回 0。而 namomo 是一个固定的字符串 "namomo"。
换句话说,我们需要找出所有在 s 中出现的与 "namomo" 在对应位置上字符相同或不同的子序列的数量,并计算这个数量模 998244353。