hdu 4920 快速矩阵相乘 以后得换一种写法了

 

【题意】:求两个矩阵相乘的结果 

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 using namespace std;
 5 #define mod 3
 6 
 7 int a[808][802],b[808][802];
 8 int c[808][808],n;
 9 
10 void mul()
11 {
12     for(int i=0; i<n; i++)
13         for(int j=0; j<n; j++)
14             if(a[i][j])
15             {
16                 for(int k=0; k<n; k++)
17                     //if(b[j][k])    加了这一句居然就超时了 实在不晓得是为什么
18                     c[i][k]=(c[i][k]+a[i][j]*b[j][k]);
19                 //取模运算是最耗时的运算 经计算这里不会超过数据范围 所以不要一步一取模,最后一步来取余就可以了
20             }
21 }
22 
23 int main()
24 {
25     int i,j,m,t;
26     while(~scanf("%d",&n))
27     {
28         for(i=0; i<n; i++)
29             for(j=0; j<n; j++)
30                {
31                     scanf("%d",&a[i][j]);
32                     a[i][j]%=3;
33                }
34         for(i=0; i<n; i++)
35             for(j=0; j<n; j++)
36             {
37                 scanf("%d",&b[i][j]);
38                 b[i][j]%=3;
39             }
40         memset(c,0,sizeof(c));
41         mul();
42         for(i=0; i<n; i++)
43         {
44             printf("%d",c[i][0]%3);
45             for(j=1; j<n; j++)
46                 printf(" %d",c[i][j]%3);
47             printf("\n");
48         }
49     }
50     return 0;
51 }

 

posted @ 2014-08-06 15:43  galaxy77  阅读(141)  评论(0编辑  收藏  举报