2013-05-08 90 views
0

让a,b和c为long long(int64)数字,如何计算(a * b)%c?这里的问题是你不能乘以(a%c)*(b%c),因为它不适合int64变量。那么,可以做些什么呢?如何计算两个int64数字相乘的结果另一个int64数字?

为了以防万一它有帮助,我在使用C++。

+0

FWIW,'%'是剩余运算符_not_模数。你真的需要模数吗?还是'(a * b)> = 0 && c> 0'总是正确的? – ldav1s 2013-05-08 03:12:46

+0

可能的重复[通过平方的模数求幂的溢出可能性](http://stackoverflow.com/questions/16426557/overflow-possibilities-in-modular-exponentiation-by-squaring) – 2013-05-08 11:42:06

+0

在建议的重复中的问题不看起来立即相同,但它是同样的问题,大模数的模乘法。 – 2013-05-08 11:43:18

回答

0

您可以使用任意精度库,如gmp,以确保您永远不会溢出您的数字类型。

您确保您的乘法不会溢出您的类型。在不了解更多关于您的意见的情况下,我无法真正推测这么做的好方法。

this question非常适用于您的任务。

相关问题