题目地址


#include<cstdio>
#include<iostream>
using namespace std;
const int MAXX=2e2,MAXY=2e2;
struct Mat{
	int x,y;
	int a[MAXX][MAXY];
};
Mat mull(Mat a,Mat b){
	Mat c;
	c.x=b.x,c.y=a.y;
	for(int i=1;i<=c.x;i++){
		for(int j=1;j<=c.y;j++){
			for(int k=1;k<=a.x;k++)
				c.a[j][i]=c.a[j][i]+a.a[j][k]*b.a[k][i];
		}
	}
	
	return c;
}
int main(){
	int x1,y1,x2,y2;
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
	Mat a,b;
	a.x=x1,a.y=y1,b.x=x2,b.y=y2;
	for(int j=1;j<=y1;j++){
		for(int i=1;i<=x1;i++){
			scanf("%d",&a.a[j][i]);
		}
	}
	for(int j=1;j<=y2;j++){//
		for(int i=1;i<=x2;i++){
			scanf("%d",&b.a[j][i]);
		}
	}
	Mat ans=mull(a,b);
	for(int i=1;i<=ans.y;i++){
		for(int j=1;j<=ans.x;j++){
			printf("%d ",ans.a[i][j]);
		}
		printf("\n");
	}
	return 0;
}