数论——矩阵加速基础


先了解一下小常识

前置芝士

矩阵(你不会矩阵看这个干蛤)

矩阵加速

斐波那契数列,相信大家都耳熟能详。不就是 O ( n ) O(n) O(n)的时间复杂度嘛。
但是如果 n ≤ 2 ∗ 1 0 9 n\leq2*10^9 n2109,那该怎么做呢?
看到数据范围后,让人目瞪口呆!(某老师的 P o w e r   P o i n t Power\ Point Power Point
1 5 ∗ ( ( 1 + 5 2 ) k − ( 1 − 5 2 ) k ) \frac{1}{\sqrt5}*((\frac{1+\sqrt5}{2})^k-(\frac{1-\sqrt5}{2})^k) 5 1((21+5 )k(215 )k)。(神都神了)

当然是矩阵加速辣!!
× ∞ \times\infty ×
想一想,这个数据范围,怎么才能过?需要一个 O ( log ⁡ n ) O(\log n) O(logn)的时间复杂度。怎么构造 O ( log ⁡ n ) O(\log n) O(logn)快速幂矩阵快速幂

加速矩阵的构造

勾重点了!!

f 1 = 1 , f 2 = 1 , f n = f n − 1 + f n − 2 ( n ≥ 3 ) f_1=1,f_2=1,f_n=f_{n-1}+f_{n-2}(n\geq3) f1=1,f2=1,fn=fn1+fn2(n3),也就是斐波那契数列。
若构造矩阵 A = [ f n f n − 1 ] A=\begin{bmatrix}f_n&f_{n-1}\end{bmatrix} A=[fnfn1],考虑前一种状态,即 A ′ = [ f n − 1 f n − 2 ] A'=\begin{bmatrix}f_{n-1}&f_{n-2}\end{bmatrix} A=[fn1fn2]。如果有矩阵 B B B能够满足 A ′ × B = A A'\times B=A A×B=A,那么就可以直接用 [ f 2 f 1 ] × B n − 2 \begin{bmatrix}f_2&f_1\end{bmatrix}\times B^{n-2} [f2f1]×Bn2就可以得到 f n f_n fn了!
所以关键在于如何构造矩阵 B B B
下面介绍一种常用的方法:
如下:
f n = 1 ∗ f n − 1 + 1 ∗

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值