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

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

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

분수 지수

문제로 돌아가기

해설

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