hdu 4920 Matrix multiplication (矩阵乘法)

矩阵乘法模3算法
本文介绍了一个关于矩阵乘法的编程问题,给定两个大小为n×n的矩阵A和B,要求计算它们的乘积并对结果取模3。文章提供了一段C++代码示例,展示了如何有效地实现这一算法,并特别注意了一些可能引起错误或效率问题的细节。
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 A ij. The next n lines describe the matrix B in similar format (0≤A ij,B ij≤10 9).
 

 

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 }

 

转载于:https://www.cnblogs.com/pblr/p/4738024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值