314
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