DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

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​