HDU 4920 (Matrix multiplication)

2015-07-20 17:09:36 ? 作者: ? 浏览: 2
??

Matrix multiplication

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 3376 Accepted Submission(s): 1414



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

Author Xiaoxu Guo (ftiasch)
Source 2014 Multi-University Training Contest 5

题意:两个n*n矩阵相乘,输出相乘后的矩阵。 思路:普通方法一般来说是超时的,我们可以先将一个矩阵转置。然后再相乘。 注意:结果要%3。所以一开始直接先%3.后来再%3.
#include 
  
   
#include 
   
     #include 
    
      #include
      #include 
      
        #include 
       
         #include 
        
          #include
         
           #include 
          
            #include 
           
             #include 
            
              using namespace std; #define inf 0x6f6f6f6f #define mod 10 int a[805][805]; int b[805][805]; int c[805][805]; int main() { int n,i,j,k; while(cin>>n) { for(i=1; i<=n; i++) for(j=1; j<=n; j++) { scanf("%d",&a[i][j]); a[i][j]%=3; } for(i=1; i<=n; i++) for(j=1; j<=n; j++) { scanf("%d",&b[j][i]); b[j][i]%=3; } for(i=1; i<=n; i++) for(j=1; j<=n; j++) { c[i][j]=0; for(k=1; k<=n; k++) { c[i][j]+=a[i][k]*b[j][k]; } if(j
              
             
            
           
          
         
        
       
      
    
   
  
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: