TOP > 数学 べき乗
べき乗(Mod-Pow)
説明
ある数のべき乗を求める。
計算量
- O(logn)
実装例
- power(x, n, mod):= xn を mod で割った余りで返す。
Copy
template< typename T >
T mod_pow(T x, T n, const T &p) {
T ret = 1;
while(n > 0) {
if(n & 1) (ret *= x) %= p;
(x *= x) %= p;
n >>= 1;
}
return ret;
}
検証
Copy
#define PROBLEM "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_B"
#include "../../template/template.cpp"
#include "../mod-pow.cpp"
int main() {
int64 M, N;
cin >> M >> N;
cout << mod_pow(M, N, (int64)(1e9 + 7)) << endl;
}