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

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

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

루미의 생일파티장 꾸미기

問題に戻る

解説

  • 타일의 가로 길이는 xLxLxL (1≤x≤N)(1 \le x \le N)(1≤x≤N) 꼴입니다. 가로 길이가 xLxLxL이면 세로 길이는 xLxLxL 이하이면서 xLxLxL과 서로소인 양의 정수이므로 φ(xL)\varphi(xL)φ(xL)가지입니다.
  • 따라서 ∑x=1Nφ(xL)\sum_{x=1}^{N} \varphi(xL)∑x=1N​φ(xL)을 구하면 됩니다.
  • g=gcd⁡(x,L)g = \gcd(x, L)g=gcd(x,L)이라 하면 φ(xL)=φ(x) φ(L) gφ(g)\varphi(xL) = \varphi(x)\,\varphi(L)\,\dfrac{g}{\varphi(g)}φ(xL)=φ(x)φ(입니다.
  • N≤107N \le 10^7N≤107이므로 φ(1),…,φ(N)\varphi(1), \ldots, \varphi(N)φ(1),…,φ(N)을 에라토스테네스의 체로 배열에 미리 구해 둡니다. g≤x≤Ng \le x \le N이라 도 이 배열에서 꺼내면 됩니다.
  • φ(x)⋅gφ(g)=φ(xL)φ(L)\varphi(x) \cdot \dfrac{g}{\varphi(g)} = \dfrac{\varphi(xL)}{\varphi(L)}φ(x)⋅φ(g)g​=은 정수이므로, 를 로 나눈 값을 정수로 바로 계산할 수 있습니다. 모듈러 역원은 필요 없습니다. 이므로 64비트 정수로 충분합니다.
  • 이 값들을 더한 뒤 φ(L)\varphi(L)φ(L)을 곱하고 998 244 353998\,244\,353998244353으로 나눈 나머지를 출력합니다. φ(L)\varphi(L)φ(L)은 LLL을 L\sqrt{L}까지 나눠 보며 소인수분해해 구합니다.
  • 시간복잡도는 O(L+Nlog⁡log⁡N+Nlog⁡L)\mathcal{O}(\sqrt{L} + N\log\log N + N \log L)O(L​+NloglogN+입니다.
L
)
φ(g)g​
g
≤
x≤
N
φ(g)\varphi(g)φ(g)
φ(L)φ(xL)
​
φ(x)⋅g\varphi(x) \cdot gφ(x)⋅g
φ(g)\varphi(g)φ(g)
φ(x)⋅g≤1014\varphi(x) \cdot g \le 10^{14}φ(x)⋅g≤1014
L​
N
log
L
)