跳转至

牛客-996A a^b(快速幂)

链接:https://ac.nowcoder.com/acm/contest/996/A

题目描述

求 a 的 b 次方对 p 取模的值,其中 0 \leq a,b,p \leq 10^9

输入描述:

三个用空格隔开的整数a,b和p。

输出描述:

一个整数,表示a^b \bmod p的值。

示例1

输入

2 3 9

输出

8

#include <bits/stdc++.h>

using namespace std;

long long calculate(long long a, long long b, long long p)
{
    if (a == 0) return 0;

    long long res = 1 % p;
    while (b) {
        if (b & 1) res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }

    return res;
}


int main()
{
    std::ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    long long a, b, p;
    cin >> a >> b >> p;

    cout << calculate(a, b, p) << endl;

    return 0;
}