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

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

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

Polynomial Inverse DSL

問題に戻る

解説

초기에는 g=f0−1g=f_0^{-1}g=f0−1​로 두면 fg≡1(modx)fg\equiv 1\pmod{x}fg≡1(modx)이다. 길이 mmm의 역원 ggg를 알고 있을 때 Newton 갱신

g′=2g−fg2(modx2m)g' = 2g-fg^2\pmod{x^{2m}}g′=2g−fg2(mod

을 사용하면 정밀도를 두 배로 늘릴 수 있다. 일반적인 두 번의 full convolution 구현은 정확하지만 N=220N=2^{20}N=220에서 정규화 비용이 약 242424이므로 만점을 받지 못한다.

만점 구성은 q=fg2q=fg^2q=fg2의 필요한 높은 절반을 두 종류의 cyclic convolution으로 복원한다. ggg의 길이는 mmm이고 fff는 길이 2로 잘라서 사용한다.

먼저 길이 2m2m2m의 cyclic convolution으로

u=q mod (x2m−1)u=q\bmod (x^{2m}-1)u=qmod(x2m−1)

을 계산한다. 이는 길이 2m2m2m의 DFT 두 번과 IDFT 한 번으로 얻는다.

다음으로 rrr을 원시 4m4m4m제곱근으로 잡고 j=rmj=r^mj=rm이라 하자. 계수에 rir^ir를 곱하고 를 로 에 대해 접은 뒤 길이 의 cyclic convolution을 계산한다. 역변환 뒤 를 곱하면

vk=qk+jqk+m−qk+2m−jqk+3mv_k=q_k+jq_{k+m}-q_{k+2m}-jq_{k+3m}vk​=qk​+jq

을 얻는다.

0≤k<m0\le k<m0≤k<m에 대해

A=qk,B=qk+m,C=qk+2m,D=qk+3mA=q_k,\quad B=q_{k+m},\quad C=q_{k+2m},\quad D=q_{k+3m}A=qk​,B=q

라 두면

ulow=A+C,uhigh=B+D,u_{\mathrm{low}}=A+C,\qquad u_{\mathrm{high}}=B+D,ulow​=A+C,u v=A+jB−C−jD.v=A+jB-C-jD.v=A+jB−C−jD.

또한 fg≡1(modxm)fg\equiv 1\pmod{x^m}fg≡1(modxm)이므로 q=fg2≡g(modxm)q=fg^2\equiv g\pmod{x^m}q이고 이다. 따라서

−B=j(ulow+v−2g)−uhigh2.-B=\frac{j(u_{\mathrm{low}}+v-2g)-u_{\mathrm{high}}}{2}.−B=2j(ulow​

Newton 갱신에서 새 높은 절반은 정확히 −B-B−B이므로 위 식을 그대로 계산하여 ggg의 뒤에 붙이면 된다.

각 단계는 길이 2m2m2m 변환 세 번과 길이 mmm 변환 세 번을 사용한다. N=2KN=2^KN=2K일 때 총 비용은

3∑k=0K−1(D(2k+1)+D(2k))=(9K−12)N+12.3\sum_{k=0}^{K-1}\left(D(2^{k+1})+D(2^k)\right) =(9K-12)N+12.3k=0∑K−1​(D(2

따라서 N=220N=2^{20}N=220에서

C=8.400000572…<9C=8.400000572\ldots<9C=8.400000572…<9

이므로 만점을 받는다. NNN이 222의 거듭제곱이 아니면 각 단계에서 000으로 패딩하고 마지막에 길이 NNN으로 자르면 된다.

DFT의 주파수 순서를 알 필요는 없다. 같은 길이의 두 DFT 결과를 원소별로 곱하는 연산만 사용하므로 명세가 보장하는 opaque-order 성질만으로 충분하다.

Solution written by GPT5.6

x2m
)
m2m
2m
i
fff
FOLD
xm−1x^m-1xm−1
mmm
r−ir^{-i}r−i
k+m​
−
qk+2m​−
jqk+3m​
k+m
​
,
C
=
qk+2m​,D=
qk+3m​
high
​
=
B+
D,
=
fg2≡
g
(modxm)
A=gkA=g_kA=gk​
+
v
−
2
g
)
−
uhigh​
​
.
k+1
)
+
D
(
2k
)
)
=
(9K−
12)N+
12.