首页 > 其他 > 详细

乘法取模

时间:2016-10-11 21:02:57      阅读:187      评论:0      收藏:0      [点我收藏+]

 

当我要计算两个数相乘后取模的结果时,可以这样写:

 1 typedef long long LL;
 2 
 3 LL multi(LL a, LL b, LL mo){
 4     LL ans = 0;
 5     while(b){
 6         if(b & 1){
 7             ans += a;
 8             if(ans >= mo){
 9                 ans -= mo;
10             }
11         }
12         a <<= 1;
13         if(a >= mo){
14             a -= mo;
15             if(a == 0) return ans;
16         }
17         b >>= 1;
18     }
19     return ans;
20 } 

这样可以防止中间过程溢出,但速度可能不是辣么快。

乘法取模

原文:http://www.cnblogs.com/CsOH/p/5950491.html

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