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
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 }

 

posted on 2015-08-17 22:41  pb2016  阅读(320)  评论(0编辑  收藏  举报