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



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

  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; 

 

 代碼待續... 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM