C++ アルゴリズムとデータ構造のライブラリ
#include "library/number/mod/mod_pow.hpp"$O(logN)$
long long ans = mod_pow(a, n, MOD);
#pragma once
long long mod_pow(long long a, long long n, long long m) {
long long res = 1ll;
while (n > 0) {
if (n & 1) res = res * a % m;
a = a * a % m;
n >>= 1ll;
}
return res;
}#line 2 "library/number/mod/mod_pow.hpp"
long long mod_pow(long long a, long long n, long long m) {
long long res = 1ll;
while (n > 0) {
if (n & 1) res = res * a % m;
a = a * a % m;
n >>= 1ll;
}
return res;
}