先固定一个失灵字母 c,考虑有多少个原始字符串删除所有 c 后可以得到 s。
如果 s 中已经出现了字母 c,那么这种情况不可能。因为键盘中字母 c 失灵,原始字符串中所有的 c 都不会被输入,所以最终得到的 s 中不可能含有 c。
因此,只有没有出现在 s 中的字母才可能是失灵字母。
接下来考虑固定一个没有出现在 s 中的字母 c。
小明准备输入一个仅由小写英文字母组成的字符串,但他的键盘在一开始就有且仅有一个按键失灵,导致该字母在原串中的所有出现都没有被输入,最终得到的字符串为 s。小明还告诉你:原本要输入的完整字符串中任意相邻两个字符都不相同。
请你计算,对于每一个可能的小写字母 c('a' 到 'z'),有多少个满足条件的原始字符串(删除所有 c 后得到 s,且自身相邻字符不同)。请输出将这些情况下得到的数量相加后的总和。由于答案可能很大,结果对 109+7 取模。
每个测试文件包含多组测试数据。第一行输入一个整数 T (1≤T≤105) 表示数据组数。接下来每组数据描述如下:
保证所有测试数据中字符串长度总和不超过 5×105。
对于每组测试数据,输出一个整数,表示“可能的原始字符串”的数量对 109+7 取模后的结果。
输入
3
4
abac
4
aaaa
3
xyz
输出
736
100
368
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.