ASEMI-GBU2510整流橋怎麼選型號?
阿新 • • 發佈:2021-07-12
矩陣快速冪
1.矩陣乘法:
對於n*k的矩陣A,k*m的矩陣B,相乘的得到的矩陣C為:
我們可以發現,對於矩陣A,B,只有當A的列等於B的行時,兩個矩陣才能相乘。
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=50; 4 int a[N][N],b[N][N],c[N][N]; 5 int n,k,m; 6 int main(){ 7 cin>>n>>k>>m; 8 for(int i=1;i<=n;i++){ 9 for(int j=1;j<=k;j++){ 10 cin>>a[i][j]; 11 } 12 } 13 for(int i=1;i<=k;i++){ 14 for(int j=1;j<=m;j++){ 15 cin>>b[i][j]; 16 } 17 } 18 for(int i=1;i<=n;i++){ 19 for(int j=1;j<=m;j++){ 20 for(int r=1;r<=k;r++){ 21 c[i][j]+=a[i][r]*b[r][j]; 22 } 23 } 24 } 25 for(int i=1;i<=n;i++){ 26 for(int j=1;j<=m;j++){ 27 cout<<c[i][j]<<" "; 28 } 29 cout<<endl; 30 } 31 }
2.矩陣快速冪
在學習矩陣乘法後,我們便可以開始學習矩陣快速冪了。
老規矩,直接上例題:
計算斐波那契數列第n項的後四位(n<=1e9)。
好傢伙,這不遞推板題嘛!~
仔細點,n<=1e9!
對於如此之大的資料規模,我們只能用O(logn)或O(√n)的演算法來實現。
那O(logn)的快速冪演算法就十分合適了。
我們先列出遞推方程式:
其中,1 1 1 0這個矩陣可以通過方程求得。
於是,我們只需要類比普通的快速冪計算1 1 1 0這個矩陣即可。