a^b(快速幂)

题目描述

求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9

输入

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

输出

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

样例输入

2 3 9

样例输出

8

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll qsm(ll a,ll b,ll p)
{
    ll ans = 1;
    ll flag = a;
    while(b!=0)
    {
        if(b%2!=0)
        {
            ans*=flag;
            ans%=p;
        }
        flag*=flag;
        flag%=p;
        b/=2;
    }
    return ans;
}
int main()
{
    ll a,b,p;
    cin>>a>>b>>p;
    cout<<qsm(a,b,p)%p;
    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/nublity/p/9262069.html