#ABC104D. 我们爱 ABC

我们爱 ABC

我们爱 ABC

题目描述

字符串 TT 的「ABC 数」是指满足以下所有条件的整数三元组 (i,j,k)(i, j, k) 的个数。

  • 1i<j<kT1 \le i \lt j \lt k \le |T|(T|T|TT 的长度)
  • Ti=T_i = A(TiT_iTT 中从开头数第 ii 个字符)
  • Tj=T_j = B
  • Tk=T_k = C

例如,当 T=T = ABCBC 时,满足所有条件的三元组 (i,j,k)(i, j, k)(1,2,3),(1,2,5),(1,4,5)(1, 2, 3), (1, 2, 5), (1, 4, 5)33 个,因此 TT 的 ABC 数是 33

给定字符串 SSSS 中的每个字符都是 ABC? 之一。

SS? 的个数为 QQ。把 SS 中的每个 ? 分别替换为 ABC 之一,可以构造出 3Q3^Q 种字符串。请求出这些所有字符串的 ABC 数之和。

由于该和可能非常巨大,请输出该和除以 109+710^9 + 7 的余数。

输入格式

输入从标准输入按以下格式给出。

SS

输出格式

输出 3Q3^Q 种字符串所有 ABC 数之和除以 109+710^9 + 7 的余数。

样例

A??C
8

这种情况下,Q=2Q = 2,把每个 ? 分别替换为 ABC 之一可以构造出 3Q=93^Q = 9 种字符串。每种字符串的 ABC 数如下。

  • AAAC: 00
  • AABC: 22
  • AACC: 00
  • ABAC: 11
  • ABBC: 22
  • ABCC: 22
  • ACAC: 00
  • ACBC: 11
  • ACCC: 00

这些数的和是 0+2+0+1+2+2+0+1+0=80 + 2 + 0 + 1 + 2 + 2 + 0 + 1 + 0 = 8,输出 88 除以 109+710^9 + 7 的余数,即 88

ABCBC
3

Q=0Q = 0 时,输出 SS 本身的 ABC 数除以 109+710^9 + 7 的余数。这个字符串与题目描述中作为例子举出的字符串相同,它的 ABC 数是 33

????C?????B??????A???????
979596887

这种情况下,3Q3^Q 种字符串所有 ABC 数之和是 22919796129242291979612924,输出它除以 109+710^9 + 7 的余数,即 979596887979596887

数据范围

  • 3S1053 \le |S| \le 10^5
  • SS 中的每个字符都是 ABC? 之一。
难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
1613
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签