Matrix multiplicationTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 3827 Accepted Submission(s): 1573
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 A ij. The next n lines describe the matrix B in similar format (0≤A ij,B ij≤10 9).
Output
For each tests:
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Sample Input
Sample Output
Author
Xiaoxu Guo (ftiasch)
|
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int A[810][810];
int B[810][810];
int D[810][810];
void Mulit(int n){
memset(D,0,sizeof(D));
for(int i=0;i<n;++i){
for(int k=0;k<n;++k){
if(A[i][k]){
for(int j=0;j<n;++j){
D[i][j]=D[i][j]+(A[i][k]*B[k][j]);
}
}
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
printf(j==0?"%d":" %d",D[i][j]%3);
}
printf("\n");
}
}
int main()
{
int n,i,j,k;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;++i){
for(j=0;j<n;++j){
scanf("%d",&A[i][j]);
A[i][j]%=3;
}
}
for(i=0;i<n;++i){
for(j=0;j<n;++j){
scanf("%d",&B[i][j]);
B[i][j]%=3;
}
}
Mulit(n);
}
return 0;
}