結果
問題 |
No.3043 括弧列の数え上げ
|
ユーザー |
![]() |
提出日時 | 2025-01-24 04:10:53 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 647 bytes |
コンパイル時間 | 262 ms |
コンパイル使用メモリ | 82,120 KB |
実行使用メモリ | 76,420 KB |
最終ジャッジ日時 | 2025-01-24 04:10:58 |
合計ジャッジ時間 | 4,455 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 8 WA * 37 |
ソースコード
mod = 998244353 N = int(input()) if N % 2 == 1: print(0) exit() n = N // 2 ans = [0] * (n + 1) catalan = [1, 1] for i in range(2, n + 1): # カタラン数を前計算 catalan.append(catalan[-1] * 2 * (2 * i - 1) * pow(i + 1, -1, mod) % mod) for i in range(2, n + 1): for j in range(i): # 左端の ( がどこで閉じるかで場合分け ans[i] += catalan[j - 1] * catalan[i - j] * (j - 1) % mod # 左のカッコの寄与 ans[i] += ans[j - 1] * catalan[i - j] % mod # 左のカッコ内の寄与 ans[i] += catalan[j - 1] * ans[i - j] % mod # 右側の寄与 ans[i] %= mod print(ans[n])