0781 - Zone 1

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Cele două diagonale delimitează în matrice 4 zone: NORD – elementele situate deasupra diagonalei principale şi deasupra celei secundare EST – elementele situate deasupra diagonalei principale şi sub cea secundară SUD – elementele situate sub diagonala principală şi sub cea secundară VEST – elementele situate sub diagonala principală şi deasupra celei secundare Să se afişeze, în ordine crescătoare, sumele elementelor din cele patru zone.

Date de intrare[edit | edit source]

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[edit | edit source]

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numerele S1 S2 S3 S4, separate printr-un spaţiu, în ordine crescătoare.Î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 ⩽ 100
  • elementele matricei vor fi mai mici decât 1.000.000

Exemplu[edit | edit source]

Date de intrare
5
3 1 8 5 4
7 8 5 1 2
2 2 6 7 3
9 8 1 3 6
7 5 3 1 7
Date de ieșire
Datele sunt introduse corect.
10 18 19 20

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Functia verifică dacă datele introduse respectă restricțiile impuse.

def validare_date(n, matrice):

   for i in range(n):
       for j in range(n):
           if matrice[i][j] >= 1000:
               return False
   return True
  1. Funcție care calculează cele patru sume cerute în problemă

def rezolvare(n, matrice):

   S1, S2, S3, S4 = 0, 0, 0, 0
   for i in range(n):
       for j in range(n):
           if i < j and i + j < n:
               S1 += matrice[i][j]
           elif i < j and i + j > n - 1:
               if i + j == n - 1:
                   continue
               S2 += matrice[i][j]
           elif i > j and i + j > n - 1 and j != n - 1 - i:
               S3 += matrice[i][j]
           elif i > j and i + j < n and j != n - 1 - i:
               S4 += matrice[i][j]
   return sorted([S1, S2, S3, S4])

if __name__ == '__main__':

   # citirea datelor de intrare
   n = int(input())
   matrice = []
   for i in range(n):
       linie = input().split()
       linie = [int(x) for x in linie]
       matrice.append(linie)
   # validarea datelor de intrare
   if validare_date(n, matrice):
       print("\nDatele sunt introduse corect.\n")
       # rezolvarea problemei
       rezultat = rezolvare(n, matrice)
       # afisarea rezultatului
       for s in rezultat:
           print(s, end=' ')
   else:
       print('Datele nu corespund restrictiilor impuse.')


</syntaxhighlight>