矩阵快速幂—— 构造矩阵
Posted asdfknjhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵快速幂—— 构造矩阵相关的知识,希望对你有一定的参考价值。
借鉴视频:https://www.bilibili.com/video/BV1gx41127d7?p=2
借鉴博客:https://blog.csdn.net/wangjian8006/article/details/7868864
一,汇总
矩阵乘法可以用来求递推式
基本形式:由一个 基础矩阵(用 A 表示) 和 递推矩阵(用 B 表示) 组成 (名字自己取的 ,也不知道有没有专业名称)
基础矩阵:由条件充分的已知元素组成,如 f(n-1) , f(n-2) 等等
递推矩阵:一个固定矩阵,元素不包含变量,基础矩阵 乘以 递推矩阵 可以得到 下一个基础矩阵
下一个基础矩阵:与基础矩阵大小相同,包含 f(n) 和 基础矩阵的一部分元素,下一个矩阵 乘以 递推矩阵可以得到 下下一个基础矩阵
下一个基础矩阵:与基础矩阵大小相同,包含 f(n) 和 上一个矩阵的一部分元素
注意:通常,如果 基础矩阵 只有一行,递推矩阵 是为方阵,其行数 为 基础矩阵的列数
二,Fibonacci
斐波那契数列递推关系为:F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥2
这里有两种矩阵递推式,一个是题目给出的,一个可以自己推导出来。
1,这个是题目给出的这个推导式,我不会推导
.
2,这个自己推导的递推式和第一个很像,不过还是有着本质区别,估计可以由这个推导出题目的递推式
推导过程:
由:Fn = Fn − 1 + Fn − 2 for n ≥2 可知,我们只需要两个元素,就有足够条件求下一个元素
所以:
基础矩阵由两个元素组成,f(1),f(0)
下一个矩阵也由两个元素组成:f(2),f(1)
由此,便可以求 递推矩阵:
If x < 10 f(x) = x.
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);
And ai(0<=i<=9) can only be 0 or 1 .
Give you a0 ~a9,two integer k,m,outf(k)%m
以上是关于矩阵快速幂—— 构造矩阵的主要内容,如果未能解决你的问题,请参考以下文章