關於斐波那契數列的一點規律 14年藍橋杯試題

2022-09-04 03:39:11 字數 1107 閱讀 4632

問題描述

斐波那契數列大家都非常熟悉。它的定義是:

f(x) = 1 .... (x=1,2)

f(x) = f(x-1) + f(x-2) .... (x>2)

對於給定的整數 n 和 m,我們希望求出:

f(1) + f(2) + ... + f(n) 的值。但這個值可能非常大,所以我們把它對 f(m) 取模。

公式如下

但這個數字依然很大,所以需要再對 p 求模。

輸入格式

輸入為一行用空格分開的整數 n m p (0 < n, m, p < 10^18)

輸出格式

輸出為1個整數,表示答案

樣例輸入

2 3 5

樣例輸出

0樣例輸入

15 11 29

樣例輸出

25首先我們設s(i)= f(1)+f(2)+...+f(i);  

題幹中已經告訴我們n取值很大時s(n)有可能非常大,所以不可能直接算出來 

題幹又進一步提示說s(n)對f(m)取模,然後進一步對p取模 

我們能夠直接算出的只有f(n)  

所以這個題很自然的思路就是通過f(n)的表示式來表示出取模之後的結果  

所以我們需要尋找s(n)和f(n)之間的關係。    

事實上:s(n)=f(n+2)-1 (i>0)

我們可以通過最原始的方式,檢視規律(證明可用數學歸納法,有待學習、、) 

thinking:

設f(i)為斐波那契數列第i項,s(i)=f(1)+f(2)+...+f(i),

i  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15

f(i) 1  1  2  3  5  8 13 21 34  55  89  144 233 377 610

s(i) 1  2  4  7 12 20 33 54 88 143 232  376 609 ... ... 

得到公式之後,繼續分析本題,可知 

s(i)%f(m)=(f(i+2)-1)%f(m)

=f(i+2)%f(m)+f(m)-1

=(f(i)+f(i+1))%f(m)+f(m)-1; 

**待續... 

關於斐波那契數列的一點小結

斐波那契數列就是0,1,1,2,3,5 這樣的一波數列,第三個數是前兩個數的和。兔子問題,上樓梯的台階方法的個數問題,都是斐波那契數列。斐波那契可以簡單的用遞迴實現 1 def fib n 2 calculate the nth fibonacci number 3return n if n 0 n...

關於斐波那契數列

斐波那契數列是一種非常有意思的數列,由 00 0 和 11 1 開始,之後的斐波那契係數就由之前的兩數相加。用數學公式定義斐波那契數列則可以看成如下形式 f0 0f 0 0f0 0f1 1f 1 1f1 1fn fn 1 fn 2f n f f fn fn 1 fn 2 我們約定 fnf nfn 表...

hdu 3936 斐波那契數列 規律

fibonacci數列通項公式 f n 1 5 性質 plain view plain copy print?1.f 0 f 1 f 2 f n f n 2 1。2.f 1 f 3 f 5 f 2n 1 f 2n 3.f 2 f 4 f 6 f 2n f 2n 1 1。4.f 0 2 f 1 2 f...