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 descriptiongiven 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.
Inputthe 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. 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 ).
Outputfor each tests:
Print n lines. Each of them contain N integers -- the matrix A × B in similar format.
Sample input10120 12 34 56 7
Sample output00 12 1 authorxiaoxu Guo (ftiasch)
Source2014 multi-university training contest 5
Recommendwe have carefully selected several similar problems for you: 4919 4918 4917 4916 4915
1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<cstdlib> 5 using namespace std; 6 7 struct Matrix 8 { 9 int mat[801][801];10 }hxl,tom,now;11 void solve(int n)12 {13 int i,j,k;14 for(i=1;i<=n;i++)15 {16 for(k=1;k<=n;k++)17 {18 if(hxl.mat[i][k]==0) continue;19 for(j=1;j<=n;j++)20 {21 now.mat[i][j] = now.mat[i][j] + hxl.mat[i][k]*tom.mat[k][j];22 }23 }24 }25 for(i=1;i<=n;i++)26 {27 for(j=1;j<=n;j++)28 {29 if(j==1)printf("%d",now.mat[i][j]%3);30 else printf(" %d",now.mat[i][j]%3);31 }32 printf("\n");33 }34 }35 int main()36 {37 int n;38 int i,j;39 while(scanf("%d",&n)>0)40 {41 for(i=1;i<=n;i++)42 for(j=1;j<=n;j++)43 {44 scanf("%d",&hxl.mat[i][j]);45 hxl.mat[i][j]%=3;46 now.mat[i][j] = 0;47 }48 for(i=1;i<=n;i++)49 for(j=1;j<=n;j++)50 {51 scanf("%d",&tom.mat[i][j]);52 tom.mat[i][j]%=3;53 }54 solve(n);55 56 }57 return 0;58 }