Informatică, întrebare adresată de infomatrix, 9 ani în urmă

VA ROOOG MULT!!! AM NEVOIE URGENT!
#780 CmmdcSum
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.

Răspunsuri la întrebare

Răspuns de Utilizator anonim
3
#include <iostream>
  using namespace std;
   int main()
{   
       int n,a[21][21],i,j;   
       long int S=0,K=0;   
       cout<<"n=";   
       cin>>n;   
       for(i=1;i<=n;i++)
      {       
               for(j=1;j<=n;j++)
               {           
                      cout<<"a["<<i<<"]["<<j<<"]=";           
                      cin>>a[i][j];       
                }   
      }   
      for(i=1;i<=n;i++)       
            for(j=i+1;j<=n;j++)       
            {           
                  S+=a[i][j];           
                  K+=a[j][i];       
            }   
        int r=S%K;    
        while(r)   
        {
        S=K;
        K=r;
        r=S%K;
        }   
         cout<<"cel mai mic divizor comun este:"<<K;
    return 0;
}

stassahul: E correct, dar te rog in viitor sa eviti mesaje ce nu se cer in problema, de ex cout << "n=" sau cout << "cel mai mic divizor comun este:"<<K; in loc de a 2-a foloseste cout << K. Problema e ca asa tip de probleme este controlat pe siteuri speciale ca pbinfo/infoarena si daca exista mesaje deprisos, programul chiar daca este correct se puncteaza cu 0 puncte solutia.
infomatrix: e ok,astea s deja detalii :)) pe mine algoritmul in sine ma interesa, nu vreau doar sa dau copy-paste, vreau sa inteleg:))))))
stassahul: Ok, ii scriu ca sa nu apara probleme in viitor, ca tin minte din propria experienta ca scriam in acelasi mod si dupa imi comenta ca primeste 0 puncte pe pbinfo, cind eu nici nu intelegeam ce ma e si asta.
infomatrix: inteleg si interventia ta are cele mai bune intentii:)) e de apreciat
Utilizator anonim: Mersi pentru sfat xP
Răspuns de stassahul
2
#include <iostream>

using namespace std;

int n;

int cmmdc(int a, int b);

int main()
{

    cin >> n;

    int x,Sum1=0,Sum2=0;

    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            cin >> x;
            if(j>i) Sum1+=x;
            if(j<i) Sum2+=x;
        }

    cout << cmmdc(Sum1,Sum2);

    return 0;

}

int cmmdc(int a, int b)
{
    if(b==0)
        return a;
    else
        return cmmdc(b,a%b);
}
Alte întrebări interesante