1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL P=1e9+7; struct node { LL a[511][511]; node(){memset(a,0,sizeof a);} }; int n,p,m; node operator*(node A,node B) { node C; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) for (int k=1;k<=p;k++) C.a[i][j]=(C.a[i][j]+ A.a[i][k]*B.a[k][j])%P; /*当矩阵中有负数时, C.a[i][j]=(C.a[i][j]+ A.a[i][k]*B.a[k][j])%P无法保证和手工计算一致。 */ for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) C.a[i][j]=(C.a[i][j]+P)%P; return C; } int main() { scanf("%d%d%d",&n,&p,&m); node A; for(int i=1;i<=n;i++)for(int j=1;j<=p;j++)scanf("%lld",&A.a[i][j]); node B; for(int i=1;i<=p;i++)for(int j=1;j<=m;j++)scanf("%lld",&B.a[i][j]); node C=A*B; for(int i=1;i<=n;i++) { for(int j=1;j<m;j++)printf("%lld ",C.a[i][j]); printf("%lld\n",C.a[i][m]); } return 0; }
- 1
信息
- ID
- 933
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 307
- 已通过
- 55
- 上传者