时间限制 | 内存限制 |
---|---|
1000 ms |
65536 KB |
# 题目描述
小懒獭最近学习了矩阵乘法,她决定编写一个程序帮她求出两个矩阵的乘积。
已知两个矩阵 和 分别为 和 的矩阵,小懒獭需要计算出它们的乘积矩阵 ,其中 是一个 的矩阵,满足:
# 输入格式
第一行包含三个正整数 、、,表示矩阵 的行数、列数和矩阵 的列数。
接下来 行,每行包含 个整数,表示矩阵 的元素。
接下来 行,每行包含 个整数,表示矩阵 的元素。
保证 ,矩阵中元素的值在 范围内。
# 输出格式
输出 行,每行包含 个整数,表示矩阵乘积的结果;相邻整数间用空格隔开
# 输入样例
2 3 2 | |
1 2 3 | |
4 5 6 | |
7 8 | |
9 10 | |
11 12 |
# 输出样例
58 64 | |
139 154 |
# 样例解释
根据输入数据,矩阵 为:
矩阵 为:
矩阵乘积 为:
# 题解:矩阵乘法
矩阵乘法板子题,三重循环模拟即可。
参考代码:
#include <stdio.h> | |
int n, m, p, a[105][105], b[105][105]; | |
int main() | |
{ | |
// freopen("D.in", "r", stdin); | |
// freopen("D.out", "w", stdout); | |
scanf("%d%d%d", &n, &m, &p); | |
for (int i = 1; i <= n; ++ i) | |
for (int j = 1; j <= m; ++ j) | |
scanf("%d", &a[i][j]); | |
for (int i = 1; i <= m; ++ i) | |
for (int j = 1; j <= p; ++ j) | |
scanf("%d", &b[i][j]); | |
for (int i = 1; i <= n; ++ i) | |
{ | |
for (int j = 1; j <= p; ++ j) | |
{ | |
int res = 0; | |
for (int k = 1; k <= m; ++ k) | |
res += a[i][k] * b[k][j]; | |
printf("%d ", res); | |
} | |
puts(""); | |
} | |
return 0; | |
} |