100 atcoder#AGC055D. [AGC055D] ABC Ultimatum
[AGC055D] ABC Ultimatum
题目描述
A, B, C をそれぞれちょうど 個ずつ含む長さ の文字列 が次の条件を満たすとき、 を良い文字列と呼びます: を 個の長さ の(連続とは限らない)部分列に分解する方法であって、各部分列が ABC, BCA, CAB のいずれかであるような方法が存在する。
A, B, C, ? からなる長さ の文字列 が与えられます。各 ? を A, B, C のいずれかに置き換える方法であって、結果が良い文字列となるようなものの個数を求めてください。この個数は非常に大きい可能性があるため、これを で割った余りを出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
答えを で割った余りを出力せよ。
题目大意
称一个长度为 ,只由 组成的字符串是好的,当且仅当其能划分成 个长度为 的子序列,每个子序列都是 ,或者 ,或者 。求把问号替换成 使得字符串是好的的方案数 。
1
???
3
2
AA????
2
3
?A?A?A?A?
0
9
?????????A??B??C???????????
331653164
提示
制約
- は、
A,B,C,?からなる長さ の文字列である。
Sample Explanation 1
得られる良い文字列は、ABC, BCA, CAB の 個です。
Sample Explanation 2
得られる良い文字列は、AABBCC, AABCBC の 個です。
Sample Explanation 3
A が既に 個含まれるため、良い文字列を得ることはできません。