首页 > 编程语言 > 详细

基础算法

时间:2020-09-05 23:36:27      阅读:73      评论:0      收藏:0      [点我收藏+]

64位整数乘法 [https://www.acwing.com/problem/content/92/]

sol:
将 b 进行二进制拆分,就变成了计算$a*(2^0 + 2^1 + 2^2 +....) $,结合乘法分配律,对每一项进行相加,得到结果。 \(O(logN)\)

LL mul(LL a, LL b, LL p) {
	LL res = 0;
	for(; b; b >>= 1) {
		if( b & 1) 
			res = (res + a) % p;
		a = 2 * a % p;
	} 
	return res;
} 

基础算法

原文:https://www.cnblogs.com/wyy0804/p/13619887.html

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