けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

鉄則本 A29 - Power (3Q, ★3)

 a^{b} mod 1000000007 をする問題。鉄則本の問題なので、コードのみ。

問題概要

正の整数  a, b が与えられる。 a^{b} を 1000000007 で割った余りを求めよ。

制約

  •  1 \le a \le 100
  •  1 \le b \le 10^{9}

コード

#include <bits/stdc++.h>
using namespace std;

// a^n mod m
template<class T> T mod_pow(T a, T n, T m) {
    T res = 1;
    while (n > 0) {
        if (n % 2 == 1) res = res * a % m;
        a = a * a % m;
        n >>= 1;
    }
    return res;
};

int main() {
    long long a, b;
    cin >> a >> b;
    cout << mod_pow(a, b, 1000000007LL) << endl;
}