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.
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).
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.
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Sample Input
1
0
1
2
0 1
2 3
4 5
6 7
Sample Output
0
0 1
2 1
矩阵乘法就三个for循环而已,没什么说的。不过此题好坑,要小心,如何坑的,请看代码。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int n,a[804][804],b[804][804],c[804][804]; 5 int main() 6 { 7 int i,j,k; 8 while (~scanf("%d",&n)) 9 { 10 for (i=1;i<=n;i++) 11 for (j=1;j<=n;j++) c[i][j]=0; 12 for (i=1;i<=n;i++) 13 for (j=1;j<=n;j++) 14 { 15 scanf("%d",&a[i][j]); 16 a[i][j]%=3;//每输入都要%3,让数据变小,下面才可不%3。 17 } 18 for (i=1;i<=n;i++) 19 for (j=1;j<=n;j++) 20 { 21 scanf("%d",&b[i][j]); 22 b[i][j]%=3; 23 } 24 for (k=1;k<=n;k++) //这个循环不能换在j循环下面,不然会超时。什么原因暂时不清楚。 25 for (i=1;i<=n;i++) 26 for (j=1;j<=n;j++) 27 c[i][j]+=a[i][k]*b[k][j]; //这里不能%3,不然会超时,因为多算了一步。 28 for (i=1;i<=n;i++) 29 { 30 for (j=1;j<n;j++) 31 printf("%d ",c[i][j]%3); 32 printf("%d\n",c[i][j]%3); 33 } 34 } 35 return 0; 36 }