A^B mod P = A^(B mod P-1) mod P
#数学 #競技プログラミング
ABC228Eで出会ったので……
一般に、$ A^{B} \bmod Pは、$ Pが素数のとき、
$ Bが$ 0なら、$ 1
そうでなくて、$ Aが$ Pの倍数なら、$ 0
そうでないなら、$ A^{B \bmod P-1} \bmod P
です
$ B = 0の場合と$ Aが$ Pの倍数のときを除きます。
このとき、フェルマーの小定理から、指数$ Bを$ P-1増減させても$ A^{B} \bmod Pの値が変わらないことがわかります。
フェルマーの小定理は「$ pが素数で$ xが$ pの倍数でないとき、$ x^{p-1} \equiv 1 \pmod{p}」。
$ A^{B + P-1} = A^B \times A^{P-1} \equiv A^B \times 1 = A^B \pmod{P}と変形できます。
ということは$ Bは$ P-1でmodをとっていいということですね!
例えば$ A^{B^C} \bmod P($ Pは素数)を求めたい、みたいなときに$ A^{B^C\bmod P-1} \bmod Pとできるので助かったりします。