您的位置:首页 > 其它

hdu 4920 Matrix multiplication 多校第五场 稀疏矩阵乘法

2014-08-06 10:21 405 查看
[align=left]Problem Description[/align]
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.

[align=left]Input[/align]
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).

[align=left]Output[/align]
For each tests:

Print n lines. Each of them contain n integers -- the matrix A×B in similar format.

一定要在最里层的循环优化,否则就要TLE。。还有就是输出的时候每一行没有后导0

//1453MS	7892K
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

int a[805][805], b[805][805];
int c[805][805];

int main(){
int n;
while(scanf("%d", &n) != EOF){
for(int i=0; i<n; i++)
for(int j=0; j<n; j++){
scanf("%d", &a[i][j]);
a[i][j] %= 3;
}
for(int i=0; i<n; i++)
for(int j=0; j<n; j++){
scanf("%d", &b[i][j]);
b[i][j] %= 3;
}
memset(c, 0, sizeof(c));
for(int i=0; i<n; i++){
for(int k=0; k<n; k++){
if(a[i][k]){
for(int j=0; j<n; j++){
c[i][j] += a[i][k]*b[k][j];
}
}
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(j == n-1) printf("%d\n", c[i][j] % 3);
else printf("%d ", c[i][j] % 3);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: