游客 Signup | Login
中文 | En

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;
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题