HDU 4920 Matrix multiplication 矩阵相乘。稀疏矩阵

时间:2022-02-13 10:50:06

Matrix multiplication

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1775    Accepted Submission(s):
796

Problem Description
Given two matrices A and B of size n×n, find the
product of them.

bobo hates big integers. So you are only asked to find
the result modulo 3.

Input
The input consists of several tests. For each
tests:

The first line contains n (1≤n≤800). Each of the following n lines
contain n integers -- the description of the matrix A. The j-th integer in the
i-th line equals Aij. The next n lines describe the matrix B in
similar format (0≤Aij,Bij≤109).

Output
For each tests:

Print n lines. Each of them
contain n integers -- the matrix A×B in similar format.

Sample Input
1
1
2
0 1
2 3
4 5
6 7
Sample Output
0 1
2 1
Author
Xiaoxu Guo (ftiasch)
Source
Recommend
We have carefully selected several similar problems for
you:  4919 4918 4917 4916 4915 
 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std; struct Matrix
{
int mat[][];
}hxl,tom,now;
void solve(int n)
{
int i,j,k;
for(i=;i<=n;i++)
{
for(k=;k<=n;k++)
{
if(hxl.mat[i][k]==) continue;
for(j=;j<=n;j++)
{
now.mat[i][j] = now.mat[i][j] + hxl.mat[i][k]*tom.mat[k][j];
}
}
}
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(j==)printf("%d",now.mat[i][j]%);
else printf(" %d",now.mat[i][j]%);
}
printf("\n");
}
}
int main()
{
int n;
int i,j;
while(scanf("%d",&n)>)
{
for(i=;i<=n;i++)
for(j=;j<=n;j++)
{
scanf("%d",&hxl.mat[i][j]);
hxl.mat[i][j]%=;
now.mat[i][j] = ;
}
for(i=;i<=n;i++)
for(j=;j<=n;j++)
{
scanf("%d",&tom.mat[i][j]);
tom.mat[i][j]%=;
}
solve(n); }
return ;
}