首页 > 其他 > 详细

关于斐波那契数列的一点规律 --14年蓝桥杯试题

时间:2015-03-31 17:41:22      阅读:6187      评论:0      收藏:0      [点我收藏+]

问题描述
  斐波那契数列大家都非常熟悉。它的定义是:

  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; 

 

 代码待续... 

 

 

关于斐波那契数列的一点规律 --14年蓝桥杯试题

原文:http://www.cnblogs.com/chunbiao/p/4381116.html

(1)
(3)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!