Fibonacc數列Fn取餘 演算法

2021-10-01 09:20:35 字數 1663 閱讀 6146

斐波那契數列是一組第一位f1和第二位f2為1,從第三位開始,後一位是前兩位和的一組遞增數列fn=fn-1+fn-2。 那麼當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。

如:

輸入格式

輸入包含乙個整數n。

輸出格式

輸出一行,包含乙個整數,表示fn除以10007的餘數。

樣例輸入10 此時fibonacc[ ] =

樣例輸出55

樣例輸入22 此時fibonacc[ ] =

樣例輸出7704

此處使用了動態定義陣列方式,將陣列實現動態規劃長度,使用了malloc函式,關於malloc函式可以參照malloc的用法和意義,有關於malloc的一些詳細講解,在這兒不做過多的解釋,簡要介紹些動態定義陣列長度的方式

malloc函式的使用格式一般為

int len;

int * num = (int*)malloc(sizeof(int) * len); //len生成的陣列長度,

此時num就是乙個為int型別的,可以容納len個元素的動態陣列

注:malloc是按位元組數生成的空間大小,不是按照陣列長度;動態陣列最後要free掉,這點和new生成後要delete的道理一致

#include

#include

#define n 10007

intmain()

printf

("%d\n"

,num[n-1]

);free

(num)

;}

10

55--

----

----

----

----

----

----

----

--process exited with return value 0

press any key to continue..

.

22

7704

----

----

----

----

----

----

----

----

process exited with return value 0

press any key to continue..

.

對於此類斐波拉契數列如果是採用陣列方式,則要考慮到陣列的長度定義問題,可以給定乙個很大範圍的陣列,這樣未來保證陣列不會越界,也可以採用malloc動態定義陣列的長度,為了控制資料型別不會溢位,在此將每一項的的餘數存放在陣列裡面,保證了每一項都小於n10007,也控制了資料範圍在int內可以得到

藍橋杯 Fibonacci數列(數列 取模)

入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...

Fibonacci數列取餘10007

時間限制 1.0s 記憶體限制 256.0mb fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入包含乙個整數n。輸出一行,包含乙個整數,表示fn除以10007的餘數。說明 在本題中,答案...

斐波那契數列第N項f N 矩陣快速冪

矩陣快速冪 x n y n z n 定義矩陣a m n b p q a b有意義當且僅當n p。即a的列數等於b的行數。且c a b,c m q 例如 進入正題,由於現在全國卷高考不考矩陣,也沒多大了解。因為遇到了斐波那契這題.注意到 fn 1 fn fn 1 我們會有 則 所以我們只需要想辦法求矩...