菲波那切數列求餘數

2021-07-28 12:51:09 字數 809 閱讀 4030

問題描述

fibonacci數列的遞推公式為:fn=fn-1+fn-2,其中f1=f2=1。

當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。

輸入格式

輸入包含乙個整數n。

輸出格式

輸出一行,包含乙個整數,表示f

n除以10007的餘數。

樣例輸入 10

樣例輸出

55樣例輸入

22樣例輸出

7704

資料規模與約定

1 <= n <= 1,000,000。

在本題中,n的值比較大,對應fn也比較大,再對10007求餘計算,計算複雜度非常大,執行過程一定會出問題,我們先回顧斐波那契數列的求

解方法:我想大家最熟悉的應該就是遞迴方法(或者迭代法),但是面對如此大的數值,遞迴方法一早就崩潰;所以我們先仔細讀一下題目,

此題只是讓我們求對應數列元素的餘數,我們並不需要在計算具體數列元素值上耗費心力,那,要怎樣求餘數呢,首先舉乙個小例子:

①(5732 + 7)%10;

②((5732%10)+ 7)%10;

③((5732%10)%10 +7)%10;

仔細計算之後發現①=②=③!!!

也就是先取餘再相加=相加後取餘

對於菲波那切數列,f1=1;f2=1;f3=2;...fn=f(n-1)+f(n-2);

fn%10007====f(n-1)%10007+f(n-2)%10007;

相關**:

#includeint main()

for(i=2; i

菲波那切數列

防止明天沒有時間或者忘了寫,今天先寫下吧。如果一對兔子每月生一對兔子 一對新生兔,從第二個月起就開始生兔子 假定每對兔子都是一雌一雄,試問一對兔子,一年能繁殖成多少對兔子?首先這個題目的設定是原來的一對兔子在一開始是新生的兔子,這樣這對兔子在第二個月才能生下一對新的兔子 也就是第三個月開始,第二個月...

菲波那切數列

現在已知fibonacci 菲波那切 數列的前幾項0 1 1 2 3 5 8 程式設計求出第 n 項。輸入一行,包含乙個正整數n 1 n 50輸出乙個整數。有兩種實現方式 1.遞迴實現 include include using namespace std long long f int n int...

菲波那切數列

題目描述 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m 熱度指數 808696 class solution def fibonacci self,n wr...