Pagini recente » Cod sursa (job #2158222) | Cod sursa (job #694526) | Cod sursa (job #2458829) | Cod sursa (job #2796412) | Cod sursa (job #2946969)
#include <fstream>
using namespace std;
ifstream fin("matprod.in");
ofstream fout("matprod.out");
const int maxN = 1005;
int n, mat[maxN][maxN], sum[maxN][maxN], prod[maxN][maxN];
/// valoarea pt (i, j) este valoarea precedentului + cat adauga elementul de pe (i, j) (adica suma elementelor de pe drumul pana la precedent * mat[i][j]
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
fin >> mat[i][j];
for(int i = 1; i <= n; i++) /// precedentul lui este ala de sus (deci e putin diferit)
{
sum[i][1] = sum[i - 1][1] + mat[i][1];
prod[i][1] = prod[i - 1][1] + sum[i - 1][1] * mat[i][1];
}
for(int i = 1; i <= n; i++)
{
for(int j = 2; j <= n; j++) /// precedentul e ala din stanga
{
sum[i][j] = sum[i][j - 1] + mat[i][j];
prod[i][j] = prod[i][j - 1] + sum[i][j - 1] * mat[i][j];
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
fout << prod[i][j] << ' ';
fout << '\n';
}
return 0;
}