DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

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)을 계산하여 출력한다.