码迷,mamicode.com
首页 > 其他好文 > 详细

O(1)乘法与快速乘O(log)

时间:2019-03-17 10:25:46      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:turn   cli   play   long   while   code   view   alt   show   

技术图片
//O(1)快速乘
inline LL quick_mul(LL x,LL y,LL MOD){
    x=x%MOD,y=y%MOD;
    return ((x*y-(LL)(((long double)x*y+0.5)/MOD)*MOD)%MOD+MOD)%MOD;
}
//O(log)快速乘
inline LL quick_mul(LL a,LL n,LL m)
{
    LL ans=0;
    while(n)
    {
        if(n&1) ans=(ans+a)%m;
        a=(a<<1)%m;
        n>>=1;
    }
    return ans;
}
View Code

O(1) 的有误差的 , 在mod 很大的时候不推荐用

O(1)乘法与快速乘O(log)

标签:turn   cli   play   long   while   code   view   alt   show   

原文地址:https://www.cnblogs.com/shuaihui520/p/10545667.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!