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
が既に 個含まれるため、良い文字列を得ることはできません。