#ATagc055d. [AGC055D] ABC Ultimatum
[AGC055D] ABC Ultimatum
题目描述
当且仅当一个长度为 的字符串 ,恰好包含 个 A、 个 B 和 个 C,并且存在一种将 分解为 个长度为 的(不一定连续的)子序列的方法,使得每个子序列都是 ABC、BCA 或 CAB 之一时,我们称 为好字符串。
现给定一个由 A、B、C、? 组成的长度为 的字符串 。请你计算有多少种将每个 ? 替换为 A、B 或 C 的方案,使得最终得到的字符串是好字符串。由于答案可能非常大,请输出答案对 取模的结果。
输入格式
输入从标准输入中给出,格式如下:
输出格式
输出一个整数,表示方案数对 取模的结果。
样例 1
输入
1
???
输出
3
样例 2
输入
2
AA????
输出
2
样例 3
输入
3
?A?A?A?A?
输出
0
样例 4
输入
9
?????????A??B??C???????????
输出
331653164
说明/提示
限制条件
- 是一个由
A、B、C、?组成的长度为 的字符串。
样例解释 1
可以得到的好字符串有 ABC、BCA、CAB 共 个。
样例解释 2
可以得到的好字符串有 AABBCC、AABCBC 共 个。
样例解释 3
由于已经包含 个 A,无法得到好字符串。
由 ChatGPT 4.1 翻译