问题 4178 --矩阵的乘法与旋转问题

4178: 矩阵的乘法与旋转问题★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 552  解决: 177
[提交][状态][命题人:]

题目描述

一个x*y的矩阵A共有x行,每行有y个数,第i行第j列数是A[i,j]。 定义一个x*y的矩阵A与一个y*z的矩阵B乘积是一个x*z的矩阵C,矩阵C中C[i,k]的值是将素有A[i,j]*B[j,k] (1<=j<=y)求和的结果。给出三个整数x、y、z,两个大小分别为x*y、y*z的矩阵A、B,你需要求出A与B的乘积C顺时针旋转90度的结果。

数据范围: 1<=x,y,z<=100,输入矩阵中的非负整数大小不少过100。

输入格式:第一行三个整数x、y、z,接下来x行,每行y个整数,表示矩阵A; 接下来y行,每行z个整数,表示矩阵B。

输出格式: z行,每行x个整数,表示矩阵C顺时针旋转90度的结果。

#include<cstdio>
int x,y,z,i,j,k;
int a[105][105],b[105][105],sum[105][105],ans[105][105];
int main (){
    scanf("%d%d%d",&x,&y,&z);
    for(i=1;i<=x;i++)
    	for(j=1;j<=y;j++)
    		scanf("%d",&a[i][j]);
    for(i=1;i<=y;i++)
    	for(j=1;j<=z;j++)
    		______(1)______;
    for(i=1;i<=_____(2)_____;i++)
    	for(j=1;j<=y;j++)
    		for(k=1;k<=z;k++)
    			_____(3)______
    for(i=1;i<=x;i++)
    	for(k=1;k<=z;k++)
    		_____(4)______
	for(i=1;i<=z;i++)
    	for(j=1;j<=x;j++){
    		printf("%d",ans[i][j]);
    		if(____(5)_____) putchar('\n');
    		else putchar(' ');
    	}
    return 0;
}

输入

输出

提示

来源

[提交][状态]