学习笔记第四十七节:斐波那契数列的性质

正题

      今天碰到了一个很恶心的斐波那契数列的题,现在来讲讲斐波那契数列的性质。

      递推式

      f[0]=0,f[1]=1,f[n]=f[n-1]+f[n-2]|n>=2F(n)F(n+1)=F(n)^2+F(n)F(n-1)

      通项公式

      F(n)=\frac{1}{\sqrt 5}[(\frac{1+\sqrt 5}{2}^n)-\frac{1-\sqrt 5}{2}^n]

      证明不会

     矩阵转移

      对于一个可以线性转移的式子,加入要求第n项,普通方法的时间复杂度是O(nk),k是线性转移单次代价。

      我们可以用矩阵做到O(\log_2 n\ k^3)

      比如说斐波那契矩阵就是\begin{pmatrix} f[i-1] & f[i-2] \end{pmatrix} \begin{pmatrix} 1 & 1\\1 & 0\end{pmatrix}=\begin{pmatrix} f[i] & f[i-1] \end{pmatrix}

      比较显然,我们可以把中间的那个矩阵快速幂,就可以做到O(\log_2 n\ k^3)的复杂度了。

      关于斐波那契的一些恒等式

       \\\sum_{i=1}^n F(i)=F(n+2)-1 \\\sum_{i=1}^n F(i)^2=F(n)F(n+1) \\\sum_{i=1}^n F(2i-1)=F(2n) \\\sum_{i=1}F(2i)=F(2n+1)-1 \\F(n)=F(m-1)F(n-m)+F(m)F(n-m+1) \\F(n-1)F(n+1)-F(n)^2=(-1)^n \\\to F(n-1)F(n)+F(n-1)^2-F(n)^2=(-1)^n

      都挺重要的,在这里讲一下证明。

      1.只要把1移到右边,当成F(2)然后不断合并就可以了。

      2.考虑把右边拆开,F(n)F(n+1)=F(n)^2+F(n)F(n-1)。不断拆掉较大那一项,最后剩下的就是F(2)*F(1),易证。

      3.把F(1)当成F(2)就可以了,然后不断合并。

      4.把右边的1移过来当成F(1),不断合并就可以达到了。

      5.

      \\F(n)=F(n-1)+F(n-2) \\F(n)=2F(n-2)+F(n-3) \\F(n)=3F(n-3)+2F(n-4),实际上这个递归过程也相当于斐波那契的递推过程。

      6.这个东西考虑矩阵行列式的k次方=矩阵k次方的行列式,然而k次方的矩阵恰好是\begin{pmatrix} F(k+1)&F(k)\\ F(k) & F(k-1) \end{pmatrix}

      同时求行列式即可,推一推就可以得到相邻两项的关系。

      数论相关

      gcd(F(n),F(m)) \\= gcd(F(n-m)F(m-1)+F(n-m+1)F(m),F(m)) \\=gcd(F(n-m),F(m))

      因为相邻两项F互质,可以得到上面的转移。那么这个东西不断递归,到最后就会变成gcd(F(gcd(n,m)),0)

      外面这层gcd就没有用了,所以gcd(F(n),F(m))=F(gcd(n,m))

       n|m\Leftrightarrow F(n)|F(m)

      gcd(F(n),F(m))=F(gcd(n,m))=F(n)\to F(n)|F(m)

      F(n)|F(m)\to gcd(F(n),F(m))=f(n)\to F(gcd(n,m))=gcd(F(n),F(m))=F(n)\to gcd(n,m)=n\to n|m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值