洛谷P1226 【模板】快速幂||取余运算

题目描述

给你三个整数 b,p,kb,p,k,求 b^p bmod kbpmodk

输入格式

一行三个整数 b,p,kb,p,k

输出格式

输出 b^p mod k=s

ss 为运算结果

输入输出样例

输入 #1复制

输出 #1复制

说明/提示

【样例解释】
2^{10} = 1024210=1024,1024 bmod 9 = 71024mod9=7。

【数据范围】
对于 100%100% 的数据,0le b,p,k < 2^{31}0≤b,p,k<231。

#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long int
ll power(ll a,ll b,ll p);
int main()
{
    ll b,p,k;
    while(cin>>b>>p>>k)
    {
        cout<<b<<"^"<<p<<" mod "<<k<<"="<<power(b,p,k)<<endl;
    }
}
ll power(ll a,ll b,ll p)
{
    int ans=1%p;
    for(;b;b>>=1)    //通过b>>=1舍弃最低位,通过b&1判断最低位的值 
    {
        if(b&1)
        {
            ans=(ll)ans*a%p;    
        } 
        a=(ll)a*a%p;
    }
    return ans;    
} 
Last modification:January 12th, 2020 at 01:56 am
如果觉得我的文章对你有用,请随意赞赏