您的位置:首页 > 其它

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

2015-03-31 15:45 375 查看
问题描述  斐波那契数列大家都非常熟悉。它的定义是:

  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 15f(i) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610s(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;

代码待续...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: