100 atcoder#ABC104D. [ABC104D] We Love ABC
[ABC104D] We Love ABC
配点 : 点
問題文
文字列 の ABC 数 とは、以下の条件をすべて満たす整数の組 の個数です。
- ( は の長さ)
-
A
( は の先頭から 番目の文字) -
B
-
C
例えば、 ABCBC
のとき、条件をすべて満たす組 は の 個であるため、 の ABC 数は です。
文字列 が与えられます。 のそれぞれの文字は A
, B
, C
, ?
のいずれかです。
に含まれる ?
の個数を とします。 に含まれる ?
をそれぞれ A
, B
, C
のいずれかに置き換えることで 通りの文字列が作られます。これらの文字列すべての ABC 数の和を求めてください。
ただし、この和は非常に大きくなりうるため、和を で割った余りを出力してください。
制約
- のそれぞれの文字は
A
,B
,C
,?
のいずれかである。
入力
入力は以下の形式で標準入力から与えられる。
出力
通りの文字列すべての ABC 数の和を で割った余りを出力せよ。
A??C
8
この場合、 であり、?
をそれぞれ A
, B
, C
のいずれかに置き換えることで 通りの文字列が作られます。これらの文字列それぞれの ABC 数を以下に示します。
AAAC
:AABC
:AACC
:ABAC
:ABBC
:ABCC
:ACAC
:ACBC
:ACCC
:
これらの和は であり、 を で割った余りである を出力します。
ABCBC
3
のときは、 自体の ABC 数を で割った余りを出力します。この文字列は問題文中で例として挙げたものと同じであり、その ABC 数は です。
????C?????B??????A???????
979596887
この場合、 通りの文字列すべての ABC 数の和は であり、これを で割った余りである を出力します。