大數求餘:即答案對1e9+7(1000000007)取模原因、方法總結

1、大數求餘原因:大數越界
大數越界:隨着n增大,f(n)會超過Int32甚至Int64的取值範圍,導致最終的返回值錯誤。

當一個問題只對答案的正確性有要求,而不在乎答案的數值,可能會需要將取值很大的數通過求餘變小。

2、求餘運算規則:
設正整數x,y,p,求餘符號爲⊙。
對於加法運算:(x+y)⊙p = (x⊙p+y⊙p)⊙p
對於乘法運算:(x*y)⊙p = [(x⊙p)*(y⊙p)]⊙p

以防x,y本身就超出int32範圍,可以創建一個long型變量tmp保存臨時結果。

例題:
1、面試題14- II. 剪繩子 II
2、面試題10- I. 斐波那契數列

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章