1326:【例7.5】 取余运算(mod)


时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

输入b,p,k的值,求b^p mod k的值。其中b,p,k×k为长整型数。

【输入】

输入b,p,k的值。

【输出】

求b^p mod k的值。

【输入样例】

2 10 9

【输出样例】

2^10 mod 9=7

 解析:快速幂算法,可以使用递归,详见代码:

#include <bits/stdc++.h>
using namespace std;
long long f(int x,int y,int z){
    if (y==0) return 1;
    long long p=f(x,y/2,z);
    if (y%2==1){
        return p*p%z*x%z;
    }else{
        return p*p%z;
    }
}
int main() {
    long long b,p,k;
    cin>>b>>p>>k;
    cout<<b<<"^"<<p<<" mod "<<k<<"=";
    cout<<f(b,p,k);
    return 0;
}

也可以使用递推,详见代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    long long b,p,k;
    cin>>b>>p>>k;
    cout<<b<<"^"<<p<<" mod "<<k<<"=";
    long long ans=1;
    long long m=b;
    while(p>0){
        if (p%2==1){
            ans*=m;
            ans%=k;
        }
        p/=2;
        m*=m;
        m%=k;
    }
    cout<<ans;
    return 0;
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐