1537 - 计算两个矩阵的乘积
计算两个矩阵的乘积,第一个是2*3矩阵,第二个是3*2矩阵,结果为一个2*2矩阵。
Input
输入包含多组数据,先输入一个2*3矩阵,再输入一个3*2矩阵。
Output
输出两个矩阵的乘积。
Examples
Input
1 1 1 1 1 1 1 1 1 1 1 1
Output
3 3 3 3
Solution C
#include <stdio.h> int main() { int a[2][3],b[3][2]; int ans[2][2]; while(~scanf("%d%d%d",&a[0][0],&a[0][1],&a[0][2])) { scanf("%d%d%d",&a[1][0],&a[1][1],&a[1][2]); scanf("%d%d",&b[0][0],&b[0][1]); scanf("%d%d",&b[1][0],&b[1][1]); scanf("%d%d",&b[2][0],&b[2][1]); ans[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2] * b[2][0]; ans[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2] * b[2][1]; ans[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2] * b[2][0]; ans[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2] * b[2][1]; printf("%d %d\n",ans[0][0],ans[0][1]); printf("%d %d\n",ans[1][0],ans[1][1]); } return 0; }
Solution C++
#include<stdio.h> #include<string.h> int main() { int a[2][3],b[3][2],c[2][2],i,j,k; while(scanf("%d",&a[0][0])!=EOF) { for(i=0;i<2;i++) for(j=0;j<3;j++) if(i||j) scanf("%d",&a[i][j]); for(i=0;i<3;i++) for(j=0;j<2;j++) scanf("%d",&b[i][j]); memset(c,0,sizeof(c)); for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<3;k++) c[i][j]+=a[i][k]*b[k][j]; for(i=0;i<2;i++) for(j=0;j<2;j++) printf(j==1?"%d\n":"%d ",c[i][j]); } return 0; }