P1226 快速幂取余

#include<iostream>
using namespace std;
int b,p,k;
long long ksm(long long a,int b,int k)
{
    long long s=1;
    while(b>0)
    {
        if(b%2==1)
        {
            s=(s%k)*(a%k)%k;
        }
        b=b/2;
        a=(a%k)*(a%k)%k;
    }
    return s;
}
int main()
{
    cin>>b>>p>>k;
    if(p==0){
        cout<<b<<"^"<<p<<" mod "<<k<<"="<<1%k;
    }else{
        cout<<b<<"^"<<p<<" mod "<<k<<"="<<ksm(b,p,k);
    }
    return 0;
}

版权声明 :

若文中无特殊说明,则本文为原创文章,版权归 幻沙 所有。
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。

本文链接:

https://crash-logs.cn/wrong/crash-2021-05-14_166-client.txt
1 + 5 =
快来做第一个评论的人吧~