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

乘法取模

时间:2016-10-11 21:05:55      阅读:165      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!