在大多数情况下,O(n)的效率都是值得骄傲的,然而,有时候并不是,比如如何在一秒钟内算出一个递推式的第1e9项,很明显O(n)不行了。
然而常数级又不太现实,除非你的数学非常好,这题又比较简单,你推了一个特征方程的通项公式……
所以考虑log的做法:矩阵快速幂
如果你还不知道矩阵快速幂是什么,请走这边:传送门
对于这道题,嗯,模板嘛,已经告诉你了式子,就只需要考虑矩阵了,对于整个过程,我们只需要两个矩阵,初始矩阵和转置矩阵:
先看这个特征方程F[i] = F[i - 1] + F[i - 3],那么就有一个矩阵如下