NTL_1_B | べき乗
目次
# 問題
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_B
2つの数XとNが与えられるので、XのN乗をもとめる.
# 解説
繰り返し自乗法という手法で計算量を約半分に出来る.
# 計算量
# 解答
#define M 1000000007
Int X, Y;
Int faster_pow(Int x, Int y) {
if (y == 0) return 1;
Int res = faster_pow((x * x) % M, y / 2);
if (y % 2 == 1) {
res = (res * x) % M;
}
return res;
}
void input() {
cin >> X >> Y;
}
void solve() {
cout << faster_pow(X, Y) << endl;
}
int main() {
input();
solve();
return 0;
}