papamelon 318. 斐波那契数列(挑战程序设计竞赛)

地址 https://www.papamelon.com/problem/318
image

按照题意的
dp[n]=dp[n-1]+dp[n-2]
可以得到正确答案,但是n为10^16
该算法复杂度为 O(n)
会TLE

根据矩阵相乘的知识可以得到
|Fn+2| = |1 1||Fn+1|
|Fn+1| = |1 0||Fn    |

设矩阵A= |1 1|
      |1 0|

则有
|Fn+1| = An|F0|
|Fn  | =    |F1|

|Fn+1| = An|1|
|Fn  | =    |0|

矩阵乘法也有类似快速幂的方法,使用该方法时间可以变成O(logn)

我的视频题解空间

posted on 2021-12-03 21:19  itdef  阅读(27)  评论(0编辑  收藏  举报

导航