2013-05-08 81 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非常適用於您的任務。

相關問題