斐波那契数列的 O(logN) 求法
2020-04-15 15:08:17
本文总阅读量次
介绍求斐波那契数列时间复杂度为
快速幂
快速幂是数论中非常基础的算法。
当我们要求
做法
首先预处理出:
将每一项相乘,可以得到:
我们知道:
利用
这一步的时间复杂度为
C++代码
1 |
|
斐波那契数列 求法
首先先看一下斐波那契数列。
我们设行向量
我们看一下如何构造矩阵
$
所以
,即
这样我们就可以用快速幂来求了。
C++代码
1 |
|
拓展:求斐波那契前 n 项和
分析
与上面的思路相同,在行向量中再加上和
我们设行向量
构造矩阵
$
C++代码
1 |
|