1749 - Zona 4
Enunț
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
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
Programul citește de la tastatură numerele N Z, iar apoi N*N numere naturale, reprezentând elementele matricei.
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 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
- 1 ⩽ N ⩽ 200
- 1 ⩽ Z ⩽ 4
- elementele matricei vor fi mai mici decât 1000
Exemplu
- 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
Elementele din zona 2 sunt 2 8 4 2, cu suma 16.
Rezolvare
<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>