#AT1016. 我们喜欢 ABC
我们喜欢 ABC
题目描述
字符串 的 ABC 数 是满足以下条件的整数三元组 的个数:
- 是字符串 的长度)
- =
A
(表示字符串 的第 个字符) - =
B
- =
C
例如,当 = ABCBC
时,满足条件的整数三元组 的个数为 3,对应的三元组为:(1,2,3),(1,2,5),(1,4,5)。因此, 的 ABC 数为 3。
给定一个字符串 。 中的每个字符都是 A
、B
、C
或者 ?
。
设 是 中 ?
的个数。我们可以用 A
、B
或者 C
替换 中的每个 ?
,这样可以得到 个字符串。求出所有这些字符串的 ABC 数之和。
由于这个和可能非常大,所以请将结果模 后输出。
输入
输入为标准输入,具体格式如下:
输出
输出所有 个字符串的 ABC 数之和,结果模 后输出。
A??C
8
【样例解释】
对于这个样例,,我们可以用 A
、B
或者 C
分别替换 中的每个 ?
,这样可以得到 个字符串。每个字符串的 ABC 数如下:
AAAC
的 ABC 数为 0AABC
的 ABC 数为 2AACC
的 ABC 数为 0ABAC
的 ABC 数为 1ABBC
的 ABC 数为 2ABCC
的 ABC 数为 2ACAC
的 ABC 数为 0ACBC
的 ABC 数为 1ACCC
的 ABC 数为 0
这些字符串的 ABC 数之和为 0+2+0+1+2+2+0+1+0=8,所以我们输出 8(模 后的结果)。
ABCBC
3
当 时,我们输出 本身的 ABC 数(模 后的结果)。这个例子中的字符串和问题描述中给出的例子相同,其 ABC 数为 。
????C?????B??????A???????
979596887
对于这个样例,所有 个字符串的 ABC 数之和为 2291979612924,所以我们输出 979596887(模 10^9+7 后的结果)。
提示
- 中的每个字符都是
A
、B
、C
或者?
。