No.1873 Bracket Swapping
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 31
作問者 : ytqm3 / テスター : ぷら shiomusubi496
タグ : / 解いたユーザー数 31
作問者 : ytqm3 / テスター : ぷら shiomusubi496
問題文最終更新日: 2023-06-03 13:58:51
問題文
正規括弧列 $S$ と非負整数 $K$ が与えられます。 $S$ に対して次の操作を $K$ 回する方法のうち、操作後の $S$ が正規括弧列になるものの個数を $998244353$ で割った余りを求めてください。
- $1 \le i < j \le |S|$ を満たす整数対 $(i, j)$ を選ぶ。 $S$ の $i$ 文字目と $j$ 文字目を交換する。
ただし、ある整数 $l\ (1 \le l \le K)$ が存在して $l$ 回目に選んだ $(i,j)$ が異なるとき、またその時に限り $2$ つの操作の方法を異なるとみなします。
正規括弧列の定義 (クリックで展開します)
以下のいずれかの条件を満たすような文字列を正規括弧列と定義します。
- 空文字列
- ある正規括弧列 $A$ が存在して、
(
$,A,$)
をこの順に連結した文字列 - ある空でない正規括弧列 $A, B$ が存在して、 $A, B$ をこの順に連結した文字列
入力
$S$ $K$
- $S$ は正規括弧列
- $2 \le |S| \le 200$
- $0 \le K \le 10^9$
出力
答えを出力してください。
サンプル
サンプル1
入力
(()) 1
出力
3
$1$ 度目の操作で $(i,j)=(1,2),(2,3),(3,4)$ を選んだ時条件を満たします。
サンプル2
入力
() 100
出力
1
サンプル3
入力
(()(()(())())) 924844033
出力
392727613
$998244353$ で割った余りを求めることをお忘れなく。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。