编程题
### 问题描述 小蓝在沙滩上发现了一个神秘的瓶子,瓶子里装满了神奇的问号。小蓝好奇地想知道这些问号可以填充成多少个由字母 "a"、"b" 和 "c" 组成的字符串,并且这些字符串中包含多少个 "abc" 的子序列。小明想知道这个数量,希望你能够帮助他。 具体来说,你需要将瓶子中的所有问号都填充成字母 "a"、"b" 或 "c",得到所有可能的字符串。然后,计算所有字符串中包含的 "abc" 子序列总数。由于答案可能非常大,因此请将其对 $10^9+7$ 取模。 ### 输入格式 第一行包含一个整数 $n$,表示字符串的长度。 第二行包含一个长度为 $n$ 的字符串 $s$,其中包含小写拉丁字母 "a"、"b" 和 "c",以及问号 "?"。 ### 输出格式 输出一个整数,表示所有可能的字符串中包含的 "abc" 子序列总数对 $10^9+7$ 取模的结果。 ### 样例输入 ```txt 7 ac?b?c ``` ### 样例输出 ```txt 24 ``` ### 样例说明 在第一个样例中,可能的情况有 $9$ 种: + "acabac" 有 $2$ 个子序列 "abc"。 + "acabbc" 有 $4$ 个子序列 "abc"。 + "acabcc" 有 $4$ 个子序列 "abc"。 + "acbbac" 有 $2$ 个子序列 "abc"。 + "acbbbc" 有 $3$ 个子序列 "abc"。 + "acbbcc" 有 $4$ 个子序列 "abc"。 + "accbac" 有 $1$个子序列 "abc"。 + "accbbc" 有 $2$ 个子序列 "abc"。 + "accbcc" 有 $2$ 个子序列 "abc"。 因此,总共有 $2+4+4+2+3+4+1+2+2=24$ 个子序列 "abc"。 ### 评测数据规模 对于 $100$% 的评测数据,$3\leq n\leq 200000$。
查看答案
赣ICP备20007335号-2