关于矩阵乘法
  • 板块学术版
  • 楼主Lovable_Wind
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/1/31 20:36
  • 上次更新2023/11/5 04:03:47
查看原帖
关于矩阵乘法
112631
Lovable_Wind楼主2021/1/31 20:36
#include<bits/stdc++.h>
using namespace std;
const double pi=3.14;
const int inf=0x3f3f3f3f;
const int NIL=-1;
int na,nb,ma,mb;
struct Matrix{
	int n,m;
	int matrix[1001][1001];
};
Matrix A,B,C;
Matrix matrix_mul(Matrix A,Matrix B,int MOD){
	C.n=A.n;
	C.m=A.m;
	for (int i=1;i<=A.n;i++){
		for (int j=1;j<=B.m;j++){
			for (int k=1;k<=A.n;k++){
				C.matrix[i][j]=0;
				C.matrix[i][j]+=A.matrix[i][k]*B.matrix[k][j]%MOD;
			}
		}
	}
	return C;
}
int read()
{
    int ans=0,flag=1;
    char ch=getchar();
    while( (ch>'9' || ch<'0') && ch!='-' ) ch=getchar();
    if(ch=='-') flag=-1,ch=getchar();
    while(ch>='0' && ch<='9') ans=ans*10+ch-'0',ch=getchar();
    return ans*flag;
}
int main()
{
	int MOD;
	cin>>na>>ma>>nb>>mb>>MOD;
	A.n=na;
	A.m=ma;
	B.n=nb;
	B.m=mb;
	if (na!=mb){
		cout<<"Wrong Input"<<endl;
	}
	for (int i=1;i<=na;i++){
		for (int j=1;j<=ma;j++){
			A.matrix[i][j]=read();
		}
	}
	for (int i=1;i<=nb;i++){
		for (int j=1;j<=mb;j++){
			B.matrix[i][j]=read();
		}
	}
	C=matrix_mul(A,B,MOD);
	for (int i=1;i<=na;i++){
		for (int j=1;j<=mb;j++){
			cout<<C.matrix[i][j]<<' ';
		}
		cout<<endl;
	}
}

RT,一运行就自动结束,不能输入不能输出

2021/1/31 20:36
加载中...