#aBC312D. [ABC312D] Count Bracket Sequences

[ABC312D] Count Bracket Sequences

AT_abc312_d [ABC312D] Count Bracket Sequences

题目描述

给定一个非空字符串 SS,其中每个字符都是 ()? 之一。
如果 SS 中包含 xx?,那么将每个 ? 替换为 () 可以得到 2x2^x 种新的字符串。请你计算,在这些替换方式中,使得新字符串成为括号序列的方案数,并输出其对 998244353998244353 取模的结果。

括号序列定义如下:

  • 空字符串;
  • 存在某个括号序列 AA,将 (AA) 按顺序连接得到的字符串;
  • 存在某些非空括号序列 A,BA, B,将 A,BA, B 按顺序连接得到的字符串。

输入格式

输入为标准输入,格式如下:

SS

输出格式

请输出答案。

输入输出样例 #1

输入 #1

(???(?

输出 #1

2

输入输出样例 #2

输入 #2

)))))

输出 #2

0

输入输出样例 #3

输入 #3

??????????????(????????(??????)?????????(?(??)

输出 #3

603032273

说明/提示

限制条件

  • SS 是一个长度不超过 30003000 的非空字符串,仅由 ()? 组成。

样例解释 1

SS 替换为 ()()()(())() 时,可以得到括号序列。除此之外,没有其他替换方式能得到括号序列,因此输出 22

样例解释 3

请输出对 998244353998244353 取模的结果。

由 ChatGPT 4.1 翻译