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 数の和は であり、これを で割った余りである を出力します。