斐波那契数列记录项

前言:f[n]=f[n-1】+f[n-2];f[0]=0,f[1]=1;

       这是斐波那契数列公式。如果要求F[N],要计算N次;

      更一般的知道其只与n有关的公式:   

Fn=55((1+52)n(152)n)
Fn=55((1+52)n(152)n)
Fn=55((1+52)n(152)n)
     a=sqrt(5)/5;

 

     b=(1+sqrt(5))/2;

     c=(1-sqrt(5))/2;

     fn=a(b^n-c^n);(不会Latex的痛,

     如果答案是Mod的话,运算时有问题的,当然可以矩阵快速米之类的。

但是我说一种数学上的傻逼方法。

如果mod 是一个素数,而且mod=5k+1或者mod=5k-1;

那么讲会有简洁方法;

构造一个等式  x*x-x-1=0 其解刚好是b,a;

结论对于一个这样的Mod一定能找打在Zp下的平方根(http://math.stackexchange.com/questions/523351/square-root-of-5-in-modulo-prime-field

 

比如:mod=99991

x*x-x-1(%99991)==(x-55048*(x-44944)%99991=x^2-99992x+2474077312(%99991);

所以求解的时候愉快的快速米,逆元就好了。可能你会说还是没构造矩阵来的快。

 

引入一个问题:求前n的斐波那契数列的sum%1000000009的值,n<=1000000009;

怎么做?

构造矩阵似乎比较难构造。

如果找到a,b即能sqrt(5)%10^9+7的话似乎就是等比数列

 

10^9+9的 a,b分别是 

 308495997, b=691504013;

fn=(a^n-b^n)/(a-b)  【a,b的值是前面的】

那么Sn=f1+f2+f3+...fn;

        =a^1+a^2+a^3+...a^n-b^1-b^2-...b^n/(a-b) % mod ;

        =(a^(n+1)-a)/(a-1)-{(b^(n+1)-b} /(b-1)  / (a-b) ;

这些都很好求啊。

 

还有一些在其他运用上

 

 

99991

 

posted on 2015-09-18 18:26  forgot93  阅读(340)  评论(0编辑  收藏  举报

导航