https://www.luogu.org/problemnew/show/P1962(题目传送)

n的范围很大,显然用普通O(N)的递推求F(n)铁定超时了。这里介绍一种用矩阵快速幂实现的解法:

首先普及一下矩阵乘法:

一个m*q的m行q列的矩阵A*一个q*n的q行n列的矩阵B得到一个m*n的m行n列的矩阵AB,则有:

P1962 斐波那契数列-题解(矩阵乘法扩展)

通俗的讲,就是新矩阵第i行j列的数等于第一个矩阵第i行的q个数分别乘第二个矩阵的第j列的q个数并把它们加起来的和。注意,矩阵乘法满足结合律和分配律,但不满足交换律。

我们可以把第n项F(n)、第n-1项F(n-1)写成一个1*2的矩阵[Fn  Fn-1] 并考虑怎样由前面的[Fn-1  Fn-2]推过来。可以先把[Fn  Fn-1]写成[1*Fn-1+1*Fn-2  ​1*Fn-1+0*Fn-2]的形式,试推导一个矩阵base,使

[Fn-1  Fn-2

相关文章:

  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2021-06-24
  • 2021-11-26
  • 2021-11-13
  • 2021-09-09
  • 2021-12-23
猜你喜欢
  • 2021-09-13
  • 2021-11-10
  • 2021-12-16
  • 2021-12-06
  • 2022-01-17
相关资源
相似解决方案