程序设计

1.快速幂/快速乘

相当于把指数n写成二进制和的形式

#include<bits/stdc++.h>
using namespace std;

long power(long long a,long long n,long long P)
{
    //a^n%P
    long long ans=1;
    while(n){
        if(n&1 == 1)ans=ans*a%P;
        a=a*a%P;//底数累乘
        n=n/2;//n>>1;
    }
    return ans;
}

long multiplate(long long a,long long b,long long P)
{
    //(a+b)%P
    long long ans=0;
    while(b){
        if(b&1)ans=(ans+a)%P;
        b>>1;
        a=a*2%P;
    }
    return ans;
}

int main(){
    long long a,n,P;
    cin>>a>>n>>P;//底数,指数,模数
    long long ans=power(a,n,P);
    cout<<ans;
}
posted @ 2021-09-15 11:17  Smartog  阅读(124)  评论(0)    收藏  举报