乘法取模

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘法取模相关的知识,希望对你有一定的参考价值。

 

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

 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 } 

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

以上是关于乘法取模的主要内容,如果未能解决你的问题,请参考以下文章

乘法取模

乘法取模优化

分数的乘法逆元和负数的取模运算

codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数

Divide two numbers,两数相除求商,不能用乘法,除法,取模运算

快速乘