1749 - Zona 4

From Bitnami MediaWiki

Enunț[edit | edit source]

Considerăm o matrice pătratică cu N linii și N coloane. În această matrice sunt definite 4 zone:

zona 1, formată din elementele situate strict deasupra diagonalei principale și strict deasupra diagonalei secundare;
zona 2, formată din elementele situate strict deasupra diagonalei principale și strict sub diagonala secundară;
zona 3, formată din elementele situate strict sub diagonala principală și strict sub diagonala secundară;
zona 4, formată din elementele situate strict sub diagonala principală și strict deasupra diagonalei secundare;

Cerinţa[edit | edit source]

Se dă o matrice pătratică și un număr natural Z, reprezentând o zonă din matrice. Să se determine suma elementelor din zona Z.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele N Z, iar apoi N*N numere naturale, reprezentând elementele matricei.

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numărul S, reprezentând suma elementelor din zona Z a matricei.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări[edit | edit source]

  • 1 ⩽ N ⩽ 200
  • 1 ⩽ Z ⩽ 4
  • elementele matricei vor fi mai mici decât 1000

Exemplu[edit | edit source]

Intrare
5 2
7 4 8 5 10
7 7 10 2 2
1 2 8 8 4
9 9 5 3 2
3 6 7 1 7
Ieșire
Datele sunt introduse corect.
16

Explicație[edit | edit source]

Elementele din zona 2 sunt 2 8 4 2, cu suma 16.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

def validare_matrice(matrice):

   n = len(matrice)
   # Verificăm dacă matricea este pătratică
   for linie in matrice:
       if len(linie) != n:
           return False
   # Verificăm dacă elementele matricei sunt mai mici decât 1000
   for i in range(n):
       for j in range(n):
           if matrice[i][j] >= 1000:
               return False
   return True

def suma_zona(matrice, z):

   n = len(matrice)  # dimensiunea matricei
   s = 0  # suma inițială este 0
   # pentru fiecare zonă, adăugăm elementele corespunzătoare la suma
   if z == 1:
       # Zona 1 este triunghiulară și se află sub diagonala principală
       for i in range(n):
           for j in range(n):
               if i < j and i + j < n:  # condiția pentru a fi în zona 1
                   s += matrice[i][j]  # adăugăm elementul la sumă
   elif z == 2:
       # Zona 2 este triunghiulară și se află deasupra diagonalei principale
       for i in range(n):
           for j in range(n):
               if i < j and i + j > n - 1:  # condiția pentru a fi în zona 2
                   s += matrice[i][j]  # adăugăm elementul la sumă
   elif z == 3:
       # Zona 3 este triunghiulară și se află deasupra diagonalei secundare
       for i in range(n):
           for j in range(n):
               if i > j and i + j > n - 1:  # condiția pentru a fi în zona 3
                   s += matrice[i][j]  # adăugăm elementul la sumă
   elif z == 4:
       # Zona 4 este triunghiulară și se află sub diagonala secundară
       for i in range(n):
           for j in range(n):
               if i > j and i + j < n:  # condiția pentru a fi în zona 4
                   s += matrice[i][j]  # adăugăm elementul la sumă
   return s  # returnăm suma calculată

if __name__ == '__main__':

   dimensiune, zona = input().split() 
   z = int(zona)
   matrice = []
   for i in range(n):
       linie = [int(x) for x in input().split()]
       matrice.append(linie)
   if validare_matrice(matrice):
       s = suma_zona(matrice, z)
       print(("Datele sunt introduse corect.\n"))
       print(s)
   else:
       print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight>