DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Catwalk BrainF**k

問題に戻る

解説

대괄호 문자가 정확히 2k2k2k개 등장한다고 하자. 그 위치를 고르는 방법은 (N2k)\binom{N}{2k}(2kN​)가지이고, 나머지 위치에는 각각 대괄호가 아닌 문자 666개 중 하나를 놓을 수 있다. 선택된 2k2k2k개의 위치에 올바른 괄호 문자열을 놓는 방법의 수는 카탈란 수

Cat(k)=1k+1(2kk)\mathrm{Cat}(k)=\frac{1}{k+1}\binom{2k}{k}Cat(k)=k+11​(k

이다. 따라서 컴파일되는 길이 NNN의 문자열 수를 ANA_NAN​이라 하면

AN=∑k=0⌊N/2⌋(N2k)Cat(k)6N−2kA_N=\sum_{k=0}^{\lfloor N/2\rfloor}\binom{N}{2k}\mathrm{Cat}(k)6^{N-2k}AN​=k=0∑

이다. 한 테스트 케이스만 처리한다면 이 식을 직접 계산하여 O(N)O(N)O(N)에 해결할 수 있다.

전체 테스트 케이스를 빠르게 처리하기 위해 모든 ANA_NAN​을 선형 시간에 전처리한다. [를 높이를 111 올리는 걸음, ]를 높이를 111 내리는 걸음, 나머지 여섯 문자를 높이를 유지하는 서로 다른 666개의 걸음으로 보면, 컴파일되는 문자열은 높이가 음수가 되지 않고 마지막에 000으로 돌아오는 가중 Motzkin 경로와 같다.

생성함수를

F(x)=∑n≥0AnxnF(x)=\sum_{n\ge 0}A_nx^nF(x)=n≥0∑​An​x

이라 하자. 첫 걸음을 기준으로 분해하면

F(x)=1+6xF(x)+x2F(x)2F(x)=1+6xF(x)+x^2F(x)^2F(x)=1+6xF(x)+x2F(x)

이고, 따라서

F(x)=1−6x−1−12x+32x22x2F(x)=\frac{1-6x-\sqrt{1-12x+32x^2}}{2x^2}F(x)=2x21−6x−

이다. 이를 미분하고 정리하면

x(1−12x+32x2)F′(x)+(2−18x+32x2)F(x)−2=0x(1-12x+32x^2)F'(x)+(2-18x+32x^2)F(x)-2=0x(1−12x+32x2)F′

을 얻는다. xnx^nxn의 계수를 비교하면 n≥2n\ge 2n≥2에 대해

(n+2)An=6(2n+1)An−1−32(n−1)An−2(n+2)A_n=6(2n+1)A_{n-1}-32(n-1)A_{n-2}(n+2)An​=6(2n+1)A

이다.

실제로 필요한 값은 확률

Rn=An8nR_n=\frac{A_n}{8^n}Rn​=8nAn

이다. 위 점화식을 8n8^n8n으로 나누면

(n+2)Rn=3(2n+1)4Rn−1−n−12Rn−2(n+2)R_n=\frac{3(2n+1)}{4}R_{n-1}-\frac{n-1}{2}R_{n-2}(n+2)Rn​=4

이고, 초깃값은 R0=1R_0=1R0​=1, R1=34R_1=\cfrac34R1​=이다.

법 998 244 353998\,244\,353998244353에서 222, 444, 그리고 2≤n+2≤100 0022\le n+2\le 100\,0022≤n+2≤100는 모두 역원을 가진다. 따라서 위 점화식을 그대로 모듈러 연산으로 계산할 수 있다. 입력에서 가장 큰 값을 이라 하면 을 한 번 전처리하고 각 질의에 을 출력한다.

시간 복잡도는 O(M+T)O(M+T)O(M+T)이고, 공간 복잡도는 O(M+T)O(M+T)O(M+T)이다.

또한 원래 확률의 분모는 기약분수로 줄이기 전 8N8^N8N이므로, 기약분수의 분모 역시 998 244 353998\,244\,353998244353과 서로소이다.

Solution written by GPT5.6

2k
​
)
⌊N/2⌋
​
(2kN​)
Cat
(
k
)
6N−2k
n
2
1−12x+32x2​
​
(
x
)
+
(2−
18x+
32x2)F(x)−
2=
0
n−1​
−
32(n−
1)An−2​
​
​
3(2n+1)
​
Rn−1​
−
2n−1​Rn−2​
43
​
002
MMM
R0,R1,…,RMR_0,R_1,\ldots,R_MR0​,R1​,…,RM​
RNR_NRN​