码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4920 Matrix multiplication (矩阵乘法)

时间:2015-08-17 23:25:56      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

hdu 4920 Matrix multiplication (矩阵乘法)

标签:

原文地址:http://www.cnblogs.com/pblr/p/4738024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!