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

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

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

Fractional Power

問題に戻る

解説

M=998244353M=998244353M=998244353이라고 하자. MMM은 소수이므로, MMM으로 나누어떨어지지 않는 모든 정수는 법 MMM에서 역원을 가진다.

또한 페르마의 소정리에 의해, a≢0(modM)a \not\equiv 0 \pmod Ma≡0(modM)이면

aM−1≡1(modM)a^{M-1} \equiv 1 \pmod MaM−1≡1(modM)

이다.

따라서 법 MMM에서 000이 아닌 수의 거듭제곱을 계산할 때, 지수는

φ=M−1=998244352\varphi = M-1 = 998244352φ=M−1=998244352

로 나눈 나머지만 중요하다.

문제의 조건에서

gcd⁡(∣q∣,φ)=1\gcd(|q|,\varphi)=1gcd(∣q∣,φ)=1

이므로, qqq는 법 φ\varphiφ에서 역원을 가진다. 즉 어떤 정수 rrr이 존재하여

qr≡1(modφ)qr \equiv 1 \pmod \varphiqr≡1(modφ)

를 만족한다.

원래 식은

xq≡np(modM)x^q \equiv n^p \pmod Mxq≡np(modM)

이다. 양변을 rrr제곱한다고 생각하면

(xq)r≡(np)r(modM)(x^q)^r \equiv (n^p)^r \pmod M(xq)r≡(np)

이고,

xqr≡npr(modM)x^{qr} \equiv n^{pr} \pmod Mxqr≡npr(modM)

이다. 그런데 qr≡1(modφ)qr \equiv 1 \pmod \varphiqr≡1(modφ)이므로, 페르마의 소정리에 의해

xqr≡x(modM)x^{qr} \equiv x \pmod Mxqr≡x(modM)

이다. 따라서

x≡npr(modM)x \equiv n^{pr} \pmod Mx≡npr(modM)

이다.

즉 가능한 xxx는 하나뿐이고, 정답은

npq−1(modM)n^{p q^{-1}} \pmod Mnpq−1(modM)

이다. 여기서 q−1q^{-1}q−1은 법 MMM에서의 역원이 아니라, 법 M−1M-1M−1에서의 역원이다.

알고리즘은 다음과 같다.

  • φ=998244352\varphi = 998244352φ=998244352로 둔다.
  • ppp를 법 φ\varphiφ에서 정규화하여 PPP를 구한다.
  • qqq를 법 φ\varphi에서 정규화한 뒤, 확장 유클리드 알고리즘으로 역원 을 구한다.

주의할 점은 998244352998244352998244352가 소수가 아니라는 것이다. 따라서 q−1(mod998244352)q^{-1} \pmod {998244352}q−1(mod998244352)는 페르마의 소정리로 구하면 안 되고, 확장 유클리드 알고리즘으로 구해야 한다.

또한 p,qp,qp,q가 음수일 수 있으므로, 나머지를 계산할 때 항상 000 이상 φ−1\varphi-1φ−1 이하가 되도록 정규화해야 한다.

시간 복잡도는 O(log⁡M)O(\log M)O(logM)이다.

r
(modM)
φ
rrr
  • e≡Pr(modφ)e \equiv Pr \pmod \varphie≡Pr(modφ)를 계산한다.
  • 빠른 거듭제곱으로 ne(modM)n^e \pmod Mne(modM)을 계산하여 출력한다.