蓝桥杯--矩阵乘法

http://47.104.209.207/problem/old1059

直接用矩阵乘法的性质,注意0次方的时候是变成单位矩阵。

 1 #include<cmath>
 2 #include<iostream>
 3 #include<queue>
 4 #include<vector>
 5 #include<algorithm>
 6 using namespace std;
 7 const int N=40;
 8 int matrix1[N][N],matrix2[N][N];
 9 int t[N][N];
10 int n,m;
11 void mul(){
12     for(int i=0;i<n;i++){
13         for(int j=0;j<n;j++){
14             int sum=0;
15             for(int k=0;k<n;k++){
16                 sum+=matrix1[i][k]*matrix2[k][j];
17             }
18             t[i][j]=sum;
19         }
20     }
21     for(int i=0;i<n;i++){
22         for(int j=0;j<n;j++){
23             matrix2[i][j]=t[i][j];
24         }
25     }
26 }
27 int main(){
28     cin>>n>>m;
29     for(int i=0;i<n;i++){
30         for(int j=0;j<n;j++){
31             cin>>matrix1[i][j];
32             matrix2[i][j]=matrix1[i][j];
33         }
34     }
35     for(int i=0;i<m-1;i++){
36         mul();
37     }
38     if(m>0){
39         for(int i=0;i<n;i++){
40             for(int j=0;j<n;j++){
41                 cout<<matrix2[i][j]<<" ";
42             }
43             cout<<endl;
44         }
45     }else{
46         for(int i=0;i<n;i++){
47             for(int j=0;j<n;j++){
48                 if(i==j) cout<<"1"<<" ";
49                 else cout<<"0"<<" ";
50             }
51             cout<<endl;
52         }
53     }
54     return 0;
55 }

 

posted on 2021-02-24 12:09  greenofyu  阅读(51)  评论(0编辑  收藏  举报