🚧 This website is under construction. 🚧
AtCoder
ABC
228
E

フェルマーの小定理
ABC
E
MOD

ABC228 E - Integer Sequence Fair

https://atcoder.jp/contests/abc228/tasks/abc228_e (opens in a new tab)
水色上位。MOD。

 フェルマーの小定理は逆元の計算にのみ利用されるかと思ったが、今回のように累乗計算を高速化するのにも利用される。

まず解は mknm^{k^n} であるが、 mkn%MOD%MODmkn%MODm^{k^n \% MOD} \% MOD \equiv m^{k^n} \% MOD は成り立たない。

そこでフェルマーの小定理 apaa^p \equiv a を利用する。 ap11a^{p-1} \equiv 1 により、 knk^np1p-1 で割ったあまりを考えると、

mknmkn%(p1)m^{k^n} \equiv m^{k^n\%(p-1)} が成り立ち、 mknmodMODm^{k^n}\mod{MOD} を高速に計算できる。

累乗計算では、 mmMODMOD で割り切れる時解は 00 になるので注意すること。

MOD = 998244353
n, k, m = map(int, input().split())
 
if m % MOD:
    r = pow(k, n, MOD - 1)
    print(pow(m, r, MOD))
else:
    print(0)