100 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