1.矩阵快速幂的背景
- 矩阵快速幂的作用是降低算法时间复杂度为O(logN),常见的应用有计算斐波那契数列等等。
2.斐波那契f(n)=f(n-1)+f(n-2)
2.1 递归写法
#include<bits/stdc++.h>
using namespace std;
typedef vector<vector<long long>> VEC;
typedef vector<long long> VECa;
const int N=2;
VEC fun(VEC a,VEC b){
int mod=1e9+7;
VEC ans(N+1,VECa(N+1,0));
for(int i=1;i<=N;i++){
for(int j=1;j<=N;j++){
for(int k=1;k<=N;k++){
ans[i][j]=(ans[i][j]+a[i][k]*b[k][j])%mod;
}
}
}
return ans;
}
VEC quick(int n){
int mod=1e9+7;
if(n==1){
VEC vec(N+1,VECa(N+1,0));
vec[1][1]=vec[1][2]=1;
vec[2][1]=1;
return vec;
}else{
if(n&1){
VEC temp=quick((n