1. 程式人生 > >為什麼要對1000000007取模(取餘)

為什麼要對1000000007取模(取餘)

大數階乘,大數的排列組合等,一般都要求將輸出結果對1000000007取模(取餘)
為什麼總是1000000007呢= =

大概≖‿≖✧是因為:(我猜的,不服你打我呀~)
1. 1000000007是一個質數(素數),對質數取餘能最大程度避免衝突~
2. int32位的最大值為2147483647,所以對於int32位來說1000000007足夠大
3. int64位的最大值為2^63-1,對於1000000007來說它的平方不會在int64中溢位
所以在大數相乘的時候,因為(a∗b)%c=((a%c)∗(b%c))%c,所以相乘時兩邊都對1000000007取模,再儲存在int64裡面不會溢位
。◕‿◕。

轉載:為什麼要對1000000007取模(取餘)