BLOG第一篇文章,QQ:1242454364
题目描述
分别给定 n×p和 p×m的两个矩阵 A 和 B求 A×B 。
下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵

关于矩阵运算的内容,点击以下链接自行补脑 https://blog.csdn.net/enjoy_pascal/article/details/78023441

输入
第一行三个正整数 n、p、m,表示矩阵的长宽。
之后的 n行,每行 p个整数,表示矩阵 A 。
之后的 p 行,每行 m 个整数,表示矩阵 B。
输出
输出 n 行,每行 m个整数,表示矩阵 A×B ,每个数模10 ^ 9 + 7 输出,如果输出为负数则将该数加上10^9+7。
样例输入
3 4 5
-2 -8 -9 8
-10 0 6 -8
-10 -6 6 9
4 -7 5 -5 9
10 -2 -10 5 5
-3 -7 -3 8 -2
-6 7 7 3 -2
样例输出
999999898 149 153 999999929 999999951
999999997 999999979 999999883 74 999999921
999999835 103 55 95 999999857
//代码
#include <bits/stdc++.h>
#define MN 100+10
using namespace std;
const int mod=1000000007;
long long a[MN][MN],b[MN][MN],c[MN][MN];
int main()
{
int n,p,m;
cin>>n>>p>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=p;j++)
cin>>a[i][j];
}
for(int i=1;i<=p;i++){
for(int j=1;j<=m;j++)
cin>>b[i][j];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=1;k<=p;k++){
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(c[i][j]<0)
c[i][j]=(c[i][j]+mod)%mod;
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}