2015.网研院.Problem B.矩阵连乘
题目描述
给你3个5*5的矩阵A、B、C,让你求他们依次相乘的结果矩阵D,D=ABC,
输入描述
有多组数据,第一行是数据总数。
每组数据输入三个5*5的矩阵,每个数的取值范围是[0,10]
输出描述
输出一个矩阵D即答案
输入:
1
1 2 3 4 5
6 5 8 9 7
6 5 7 8 4
5 6 3 2 1
2 3 1 4 5
1 2 3 4 5
3 2 1 4 5
6 5 4 1 2
6 2 1 4 5
3 2 1 3 4
7 8 9 6 3
1 2 4 5 6
3 2 1 4 5
3 2 1 8 6
3 0 0 1 0
输出:
886 734 804 1112 832
2074 1700 1852 2634 2005
1791 1462 1589 2280 1740
942 722 770 1234 954
848 662 710 1072 788
#include<bits/stdc++.h>
using namespace std;
int main() {
int T,sum;
int a[5][5],b[5][5],c[5][5];
int tmp[5][5],ans[5][5];
cin >> T;
while(T--) {
for(int i=0; i<5; i++)
for(int j=0; j<5; j++) {
cin>>a[i][j];
}
for(int i=0; i<5; i++)
for(int j=0; j<5; j++) {
cin >>b[i][j];
}
for(int i=0; i<5; i++)
for(int j=0; j<5; j++) {
cin >>c[i][j];
}
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
sum=0;
for(int k=0; k<5; k++) {
sum+=a[i][k]*b[k][j];
}
tmp[i][j]=sum;
}
}
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
sum=0;
for(int k=0; k<5; k++) {
sum+=tmp[i][k]*c[k][j];
}
ans[i][j]=sum;
}
}
for(int i=0; i<5; i++) {
int flag=0;
for(int j=0; j<5; j++) {
if(flag==0){
cout<<ans[i][j];
flag=1;
}
else{
cout<<" "<<ans[i][j];
}
}
cout<<endl;
}
}
}
还没有评论,来说两句吧...