0781 - Zone 1
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>
- 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
- 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>