首页 > 其他 > 详细

快速乘法+快速幂

时间:2020-11-12 00:04:55      阅读:32      评论:0      收藏:0      [点我收藏+]

快速乘法应用于两个很大的数相乘取模问题

快速乘和快速幂原理一样
主要用于是64bit整数乘法时会爆longlong但是写高精度又太麻烦的情况

模板为:

ll mul(ll a,ll b,ll mod){//快速乘法 
    ll ans=0;
    while(b){
        if(b&1){
            ans=(ans+a)%mod;
        } 
        a=(a+a)%mod;
        b>>=1;
    }
    return ans%mod;
}

 

快速幂+快速乘法:

ll mul(ll a,ll b,ll mod){//快速乘法 
    ll ans=0;
    while(b){
        if(b&1){
            ans=(ans+a)%mod;
        } 
        a=(a+a)%mod;
        b>>=1;
    }
    return ans%mod;
}
ll qpow(ll a,ll b,ll mod){
    ll ans=1;
    while(b){
        if(b&1){
            ans=mul(ans,a,mod)%mod;
        }
        a=mul(a,a,mod)%mod;
        b>>=1;
    }
    return ans%mod;
} 

 

快速乘法+快速幂

原文:https://www.cnblogs.com/lipu123/p/13961659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!