如何计算形式的模数(a*b)%c?

Kun*_*nal 5 c++ overflow modulus

如何计算形式的模数(a*b)%c?

我想计算两个int数的乘法模数,它们几乎处于溢出阶段......

这里c也是int

ken*_*ytm 15

(a * b) % c == ((a % c) * (b % c)) % c
Run Code Online (Sandbox Code Playgroud)

  • 如果 a <= b < c,a % c 和 b % c 不会执行任何操作,因此我们仍然可能会溢出。 (2认同)

Mar*_*k B 7

怎么样((a % c) * (b % c)) % c?根据您的架构,这可能比投射到更大的类型更快或更慢.


buc*_*buc 5

你可牌aclong long的,所以乘不会溢出.

((long long)a * (long long)b) % c
Run Code Online (Sandbox Code Playgroud)

  • 我认为你不会找到更快的解决方案.在x86机器上,32位乘法的结果总是64位.这样您只需通知编译器使用64位结果. (2认同)