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.
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).
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.
一定要在最里层的循环优化,否则就要TLE。。还有就是输出的时候每一行没有后导0
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;
}