0781 - Zone 1
Cerinţa
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
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
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
- 1 ⩽ n ⩽ 100
- elementele matricei vor fi mai mici decât 1.000.000
Exemplu
- 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
<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>