fbpx

Problema #780 – CmmdcSum – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi cel mai mare divizor comun al sumei elementelor de deasupra diagonalei principale și al sumei elementelor de sub diagonala principală.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire

Programul afișează pe ecran numărul D, reprezentând valoarea calculată.

Restricţii şi precizări

  • 1 ≤ n ≤ 20
  • elementele matricei vor fi mai mici decât 1.000.000
  • cel puţin un element situat deasupra diagnalei principale şi cel puţin un element situat sub diagonala principală sunt nenule

Exemplu

Date de intrare

4
8 3 5 6 
5 5 6 5 
3 8 6 5 
8 4 8 8 

Date de ieșire

6

Explicație

Suma elementelor de sub diagonala principală este 36 iar cea a elementelor de deasupra diagonalei principale este 30. Cel mai mare divizor comun pentru 36 şi 30 este 6.

#include <bits/stdc++.h>

using namespace std;
int cmmdc(int a,int b)
{
    int r , d;
    while(b!=0)
    {
        r = a % b;
        a = b;
        b =r;
    }
    d = a;
    return d;
}
int main()
{
    int n , m , a[101][101] , s = 0 , smax = 0 , d = 0;
    cin >> n ;
    for(int i = 0 ; i < n; ++i)
        for(int j = 0 ; j < n ; ++j)
            {
                cin >> a[i][j];
                smax += a[i][j];
                if(i==j) d += a[i][j];
            }
    for(int i = 0 ; i < n; ++i)
        for(int j = i+1 ; j < n ; ++j)
            s += a[i][j];
    cout << cmmdc(s,smax-s-d);
    return 0;
}
Comentarii

S-ar putea sa iti placa