首页 > 代码库 > 乘法取模

乘法取模

 

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

 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 } 

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

乘法取模