fbpx

Problema #1313 – Produs_Matrice – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau dimensiunile a două matrice, A și B și valorile acestora. Calculați produsul lor .

Date de intrare

Fișierul de intrare produs_matrice.in conține pe prima linie numerele m n, apoi începând cu următoarea linie matricea A de dimensiuni (m,n) . Pe linia m+2 numărul p, apoi matricea B de dimensiuni (n,p) .

Date de ieșire

Fișierul de ieșire produs_matrice.out va conține matricea C , construită pe baza cerinței .

Restricții și precizări

  • 1 ≤ n , m , p ≤ 100
  • -10.000 ≤ A[i][j] , B[i][j] ≤ 10.000

Exemplu

produs_matrice.in

2 3
1 -2 3
0 1 -1
2
3 1
-1 -1
0 1

produs_matrice.out

5 6 
-1 -2 

Explicație

Dacă se înmulțeste A cu B și rezultatul se află în C , atunci elementul C[i][j] reprezintă suma de produse dintre elementele de pe linia i a matricei A cu elementele de pe coloana j a matricei B. Având exemplul nostru , luăm C[1][2] = A[1][1] * B[1][2] + A[1][2] * B[2][2] + A[1][3] * B[3][2].

#include <bits/stdc++.h>
using namespace std ;
ifstream cin("produs_matrice.in");
ofstream cout("produs_matrice.out");
long long n , m , p , a[105][105] , b[105][105] , c[105][105];

int main ()
{
    cin >> m >> n;
    for(int i = 1 ; i <= m ; ++i )
        for(int j = 1 ; j <= n ; ++j )
            cin >> a[i][j] ;
    cin >> p;
    for(int i = 1 ; i <= n ; ++i )
        for(int j = 1 ; j <= p ; ++j )
            cin >> b[i][j] ;
    for(int i = 1 ; i <= m ; ++i )
        for(int j = 1 ; j <= p ; ++j )
            for(int l = 1 ; l <= n ; ++l )
                c[i][j] = c[i][j] + a[i][l] * b[l][j] ;
    for(int i = 1 ; i <= m ; ++i )
    {
         for(int j = 1 ; j <= p ; ++j )
            cout << c[i][j] << " " ;
         cout << '\n';
    }

}
Comentarii

S-ar putea sa iti placa