簡體   English   中英

數字很​​大的數字組成

[英]composition of a number where a number is very large

我正在嘗試使用數字1和2計算一個數的合成方式數。這可以使用斐波那契數列找到,其中F(1)=1F(2)=2並且

F(n)=F(n-1)+F(n-2)

由於F(n)可能非常大,所以我只需要F(n)%1000000007 。為了加快處理過程,我使用了fibonacci求冪方法。我針對同一問題編寫了兩個代碼(兩者幾乎相似)。但是其中一個大量失敗。我不知道哪一個是正確的?

CODE 1

http://ideone.com/iCPEyz

CODE 2

http://ideone.com/Un5p2S

雖然我有一種感覺,第一個應該是correct.I我不能數字會發生什么時,有當我們乘說這樣的情況下, ab和價值的a已經超過了上限a ,當我們乘用b ,那么我怎么能確定a*b是正確的。 按照我的知識,如果a值高於它的數據類型的限制,則該值從最低值再次開始像在下面的例子。

#include<iostream>
#include<limits.h>
using namespace std;
int main()
{
    cout<<UINT_MAX<<endl;
    cout<<UINT_MAX+2;
}

Output

4294967295

1

無符號n位類型的“溢出”(您實際上並不稱其為無符號,它們會環繞)將僅保留模2 ^ n的值,而不保留任意模數的模數(它們怎么可能?筆和紙)。 因此,您必須確保沒有操作超出您的類型限制,以保持正確的結果mod 100000007。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM