100 atcoder#ABC104D. [ABC104D] We Love ABC
[ABC104D] We Love ABC
题目描述
文字列 の ABC 数 とは、以下の条件をすべて満たす整数の組 の個数です。
- ( は の長さ)
-
A
( は の先頭から 番目の文字) -
B
-
C
例えば、 ABCBC
のとき、条件をすべて満たす組 は の 個であるため、 の ABC 数は です。
文字列 が与えられます。 のそれぞれの文字は A
, B
, C
, ?
のいずれかです。
に含まれる ?
の個数を とします。 に含まれる ?
をそれぞれ A
, B
, C
のいずれかに置き換えることで 通りの文字列が作られます。これらの文字列すべての ABC 数の和を求めてください。
ただし、この和は非常に大きくなりうるため、和を で割った余りを出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
通りの文字列すべての ABC 数の和を で割った余りを出力せよ。
题目大意
给你一个字符串,只包含 'A', 'B', 'C', '?', 其中'?' 表示 'A', 'B', 'C' 中的任意一个,问在所有可能的 'A', 'B', 'C' 的字符串中,总共有多少长度为3的子序列是<'A', 'B', 'C'>。
答案对 取模。
A??C
8
ABCBC
3
????C?????B??????A???????
979596887
提示
制約
- のそれぞれの文字は
A
,B
,C
,?
のいずれかである。
Sample Explanation 1
この場合、 であり、?
をそれぞれ A
, B
, C
のいずれかに置き換えることで 通りの文字列が作られます。これらの文字列それぞれの ABC 数を以下に示します。 - AAAC
: - AABC
: - AACC
: - ABAC
: - ABBC
: - ABCC
: - ACAC
: - ACBC
: - ACCC
: これらの和は $ 0\ +\ 2\ +\ 0\ +\ 1\ +\ 2\ +\ 2\ +\ 0\ +\ 1\ +\ 0\ =\ 8 $ であり、 を で割った余りである を出力します。
Sample Explanation 2
のときは、 自体の ABC 数を で割った余りを出力します。この文字列は問題文中で例として挙げたものと同じであり、その ABC 数は です。
Sample Explanation 3
この場合、 通りの文字列すべての ABC 数の和は であり、これを で割った余りである を出力します。