题目描述
Description
分别给定 n \times pn×p 和 p \times mp×m 的两个矩阵 AA 和 BB,求 A \times BA×B。
Input
第一行三个正整数 nn、pp、mm,表示矩阵的长宽。
之后的nn行,每行pp个整数,表示矩阵AA。
之后的pp行,每行mm个整数,表示矩阵BB。
Output
输出nn行,每行mm个整数,表示矩阵A \times BA×B,每个数模10^9 + 710
9
+7输出。
Sample Input 1
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
Sample Output 1
999999898 149 153 999999929 999999951
999999997 999999979 999999883 74 999999921
999999835 103 55 95 999999857
Hint
代码示例
//使输入的每个数据都加模取模
#include<bits/stdc++.h>
using namespace std;
typedef long long l;
const l mo = 1e9+7;
int main()
{
int n, p, m;
cin >> n >> p >> m;
l a[505][505], b[505][505];
for(int i=0;i<n;i++)
for (int j = 0; j < p; j++)
{
cin >> a[i][j];
a[i][j] = (a[i][j] + mo) % mo;
}
for (int i = 0; i < p; i++)
for (int j = 0; j < m; j++)
{
cin >> b[i][j];
b[i][j] = (b[i][j] + mo) % mo;
}
int i, j, k;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
l sum = mo;
for (k = 0; k < p; k++)
{
sum = (sum + a[i][k] * b[k][j]) % mo;
}
cout << sum % mo;
if (j != m-1)cout << " ";
}
cout << endl;
}
}