本题要求统计有多少种操作序列可以从空串构造出给定字符串 s。
可以反向思考: 正向是每次向当前字符串中插入一个字符;反向就是从最终字符串 s 中,每次删除一个字符,直到变成空串。
对于长度为 n 的字符串:
给你一个长度为 n的字符串 s。我们按照如下过程从空串构造字符串:共进行 n次操作,每次在当前字符串的任意位置插入一个小写字母。问一共有多少种不同的操作序列,使得可以最终得到字符串s。
两个操作序列不同,当且仅当在某一步操作中,选择的插入位置或插入的小写字母不同。由于答案可能很大,请将答案对(109+7) 取模后输出。
一次 “在任意位置插入一个小写字母”,指选择当前串中 [0,length]之间的任意位置,将一个小写字母插入到该位置,使得串长度增加1。经过n 次插入后,最终串应与给定的 s完全相同。
每个测试文件均包含多组测试数据。
第一行输入一个整数 T (1≤T≤2×105)表示测试组数。
随后对于每组测试数据:
除此之外,保证单个测试文件的n之和不超过 2×106。
对于每组测试数据,输出一行一个整数,表示不同的操作序列数量对 109+7 取模的结果
输入
2
1
a
3
aba
输出
1
6
说明
第一组:n=1,只有一次插入,答案为 1。 第二组:总共有 6种不同的操作序列可以得到字符串 aba。