HDU 4920 坑爹的矩阵乘法
2017-04-02 16:35
232 查看
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.
InputThe 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,Bij≤10 9).
OutputFor each tests:
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Sample Input
Sample Output
题意:
给你两个矩阵,求他们的乘积。
看似水题,其实坑题,算法大幅度优化基本是没有可能了,就是正常的矩阵乘法,由于是对3取余,结果无非0,1,2,
假设A X B ==C
在A和B输入的时候就对3取余,计算时A中为0的元素直接C就得0,省去一部分时间,C在计算时不要取余,最后得到结果在取余
bobo hates big integers. So you are only asked to find the result modulo 3.
InputThe 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,Bij≤10 9).
OutputFor 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
题意:
给你两个矩阵,求他们的乘积。
看似水题,其实坑题,算法大幅度优化基本是没有可能了,就是正常的矩阵乘法,由于是对3取余,结果无非0,1,2,
假设A X B ==C
在A和B输入的时候就对3取余,计算时A中为0的元素直接C就得0,省去一部分时间,C在计算时不要取余,最后得到结果在取余
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> using namespace std; int a[805][805],b[805][805],c[805][805]; int main() { int n; while(scanf("%d",&n)!=-1) { 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 j=0;j<n;j++) { for(int k=0;k<n;k++) { if(a[i][k]) 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 ",c[i][j]%3); else printf("%d",c[i][j]%3); printf("\n"); } } return 0; }
相关文章推荐
- hdu 4920 Matrix multiplication(矩阵乘法)
- HDU 4920 Matrix multiplication(矩阵乘法)
- HDU 4920(Matrix multiplication-矩阵乘法优化)
- HDU_4920_Matrix multiplication_杭电多校1010_矩阵乘法的代码风格
- HDU 4920 Matrix multiplication(矩阵乘法,cin,cout超时呀)
- 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)
- hdu 4920 Matrix multiplication 多校第五场 稀疏矩阵乘法
- hdu--4920--原来一直写了速度慢的矩阵乘法
- HDU 4920 Matrix multiplication(稀疏矩阵的乘法)不优化很容易TLE
- hdu 4920 Matrix multiplication (矩阵乘法)
- HDU 4920 Matrix multiplication(矩阵乘法)
- 矩阵乘法 --- hdu 4920 : Matrix multiplication
- Hdu 4920 Matrix multiplication[矩阵乘法的时间复杂度优化]
- HDU 4920 Matrix multiplication(矩阵乘法小技巧)——2014 Multi-University Training Contest 5
- hdu 4920 Matrix multiplication(矩阵乘法)2014多培训学校5现场
- HDU 4307 Matrix 最小割 矩阵乘法展开
- hdu 1588 Gauss Fibonacci(矩阵乘法)
- hdu 4920 Matrix multiplication (矩阵计算)
- hdu 1588 Gauss Fibonacci(矩阵乘法,二分)
- 【HDU 2855】 Fibonacci Check-up (矩阵乘法)