AT_pakencamp_2021_day2_k Bracket Inserting

题目描述

龟君对字符串玩法情有独钟。今天,他开始了一个有趣的游戏,从一个空字符串 $ s $ 开始,他进行了以下操作 $ N $ 次: - 把 $ s $ 分成两个字符串 $ l $ 和 $ r $。然后用 $ l\ + $ `()` $ +\ r $ 替换 $ s $。 现在,给你 $ N $ 次操作完成后的字符串 $ s $,即 $ T $,你的任务是找出所有可能的操作方法的数量,并将其对 $ 998244353 $ 取模后输出。 需要注意的是,如果存在一个正整数 $ k\ (1\ \le\ k\ \le\ N) $,使得第 $ k $ 次操作中的 $ (l, r) $ 不同,那么这两种操作方法被认为是不同的。 另外,考虑到龟君一定是诚实的,给定的字符串 $ T $ 总能通过某种合法的操作方法获得。

输入格式

标准输入给出如下格式: > $ N $ $ T $

输出格式

输出结果。

说明/提示

### 约束 - $ 1\ \le\ N\ \le\ 10^5 $ - $ T $ 是由 `(` 和 `)` 组成的长度为 $ 2N $ 的字符串 - 通过合适的操作,总是可以使 $ s=T $ ### 样例解释 1 考虑一种可能的操作:第一次操作时,$ l $ 和 $ r $ 为空字符串,所以 $ s= $ `()`;第二次操作时,令 $ l= $ `()`,$ r $ 为空字符串,于是 $ s= $ `()()`;第三次操作时,选择 $ l= $ `(`,$ r= $ ` )()`,于是 $ s= $ `(())()`。 ### 样例解释 3 出题者:\[turtle0123\_\_\](https://atcoder.jp/users/turtle0123\_\_) **本翻译由 AI 自动生成**