CF666C Codeword
题目描述
著名雕塑家 Cicasso 是 Reberland 的间谍!
这则消息今天登上了 Berland 报纸的头条。现在,这位雕塑家正在躲藏。这一次,你为大师提供了藏身之所。你拥有一座防护严密的地堡,你把它提供给你的朋友。你将安全系统设置为只有你能打开地堡。要打开它,需要解决一个对他人来说很难但对你来说很简单的问题。
每天,地堡会生成一个代码串 $s$。每当有人想进入地堡时,屏幕上会出现一个整数 $n$。作为答案,需要输入:长度为 $n$,只包含小写英文字母并且包含字符串 $s$ 作为子序列的字符串数目,对 $10^9+7$ 取模后的结果。
字符串 $a$ 的子序列是指,可以通过从 $a$ 中删除若干(可能为零或所有)字符得到的字符串 $b$。特别地,任意字符串都是自己的子序列。例如,字符串 "cfo" 是字符串 "codeforces" 的子序列。
你还没有实现能够正确计算答案的算法,你应该尽快实现。
输入格式
第一行包含一个整数 $m$($1\le m\le 10^5$)——本测试用例中的事件数。
第二行包含一个非空字符串 $s$——当日由地堡生成的字符串。
接下来的 $m$ 行描述了这些事件。每个事件以整数 $t$ 开头,表示事件类型。
如果 $t=1$,则表示新的一天开始,接下来同一行会包含新的字符串 $s$。
如果 $t=2$,则会给出一个整数 $n$($1\le n\le 10^5$)。这个事件表示需要计算当前字符串 $s$ 和 $n$ 的答案。
所有生成字符串的长度之和不超过 $10^5$。所有给定的字符串仅包含小写英文字母。
输出格式
对于每个类型为 $2$ 的询问,请在单独一行输出答案,对 $10^9+7$ 取模。
说明/提示
在第一个事件中,统计满足形式为 "a?" 和 "?a" 的单词,其中 ? 表示任意字符。这种类型的单词各有 $26$ 个,但单词 "aa" 同时满足两种形式,因此答案是 $51$。
由 ChatGPT 5 翻译