快速幂

2020-02-16  本文已影响0人  endless_e48c
#include <cstdio>
typedef long long ll;
const int MOD = 100003;
ll n, m;
ll quick_pow(ll a, ll b) {//非递归写法 
    if (b == 0) {
        return 1;
    }
    ll ans = 1;
    while (b > 0) {
        if (b & 1) {
            ans = ans * a % MOD;
        }
        a = a * a % MOD;
        b >>= 1;
    }
    return ans;
}
ll quick_pow1(ll a, ll b) {//递归写法 
    if (b == 0) {
        return 1;
    } 
    ll ans = quick_pow1(a, b / 2) % MOD;
    ans = ans * ans % MOD;
    if (b & 1) {
        return ans * a % MOD;
    } else {
        return ans;
    }
}
int main() {
    scanf("%lld %lld", &m, &n);
    printf("%lld", quick_pow1(m, n)); 
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读