首页 > 其他 > 详细

[模板] 快速幂和龟速乘

时间:2020-07-24 22:20:17      阅读:147      评论:0      收藏:0      [点我收藏+]

快速幂

用于较快计算幂

ull quick_power(ull a,ull b,ull k){
    ull ans = 1,base = a % k;
    if(b==0 && k==1) return 0;//特判,除0以外任何数的0次方都是1,1模1得0
    do{
        if(b & 1){
            ans = (ans * base) % k;
        }
    base = (base * base) % k;
    b>>=1;
    }while(b);
    return ans;
}

龟速乘

用于乘法防爆

LL qmul(LL x, LL y, LL MOD){
	LL ans = 0;

	for(	; y; y >>= 1){
		if(y&1 == 1){
			(ans += x) %= MOD;
		}
		(x += x) %= MOD;
	}

	return ans;
}	

两者可以结合使用

[模板] 快速幂和龟速乘

原文:https://www.cnblogs.com/Foggy-Forest/p/13373747.html

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