atcoder#AGC055D. [AGC055D] ABC Ultimatum
[AGC055D] ABC Ultimatum
配点 : 点
問題文
A
, B
, C
をそれぞれちょうど 個ずつ含む長さ の文字列 が次の条件を満たすとき、 を良い文字列と呼びます: を 個の長さ の(連続とは限らない)部分列に分解する方法であって、各部分列が ABC
, BCA
, CAB
のいずれかであるような方法が存在する。
A
, B
, C
, ?
からなる長さ の文字列 が与えられます。各 ?
を A
, B
, C
のいずれかに置き換える方法であって、結果が良い文字列となるようなものの個数を求めてください。この個数は非常に大きい可能性があるため、これを で割った余りを出力してください。
制約
- は、
A
,B
,C
,?
からなる長さ の文字列である。
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを で割った余りを出力せよ。
1
???
3
得られる良い文字列は、ABC
, BCA
, CAB
の 個です。
2
AA????
2
得られる良い文字列は、AABBCC
, AABCBC
の 個です。
3
?A?A?A?A?
0
A
が既に 個含まれるため、良い文字列を得ることはできません。
9
?????????A??B??C???????????
331653164