0313 - Diagonale
De la Universitas MediaWiki
Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi diferenţa în valoare absolută dintre sumele elementelor de pe cele două diagonale.
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 numărul D, reprezentând valoarea calculată.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".
Restricții și precizări
- 1 ⩽ n ⩽ 20
- elementele matricei vor fi mai mici decât 10000
Exemplu
- Intrare
- 4
- 8 3 3 7
- 1 1 6 5
- 8 7 1 1
- 9 8 7 1
- Ieșire
- Datele sunt introduse corect.
- 18
Explicație
Sumele elementelor pe cele două diagonale sunt: 11 şi 29. Diferenţa în valoare absolută este: 18
Rezolvare
from typing import List
def validare_date(n: int, matrice: List[List[int]]) -> bool:
# Verifică dacă dimensiunea matricei este în intervalul corect
if n < 1 or n > 20:
return False
# Verifică dacă toate elementele matricei sunt în intervalul corect
for rand in matrice:
for elem in rand:
if elem < 0 or elem >= 10000:
return False
# Returnează True dacă matricea este validă
return True
def calculeaza_diferenta_diagonalelor(n: int, matrice: List[List[int]]) -> int:
# Inițializează sumele diagonalelor cu 0
suma_dp, suma_ds = 0, 0
# Calculează sumele elementelor de pe cele două diagonale
for i in range(n):
for j in range(n):
if i == j:
suma_dp += matrice[i][j]
if i + j == n - 1:
suma_ds += matrice[i][j]
# Returnează diferența dintre cele două sume, calculată ca valoare absolută
return abs(suma_dp - suma_ds)
if __name__ == '__main__':
# Citește dimensiunea matricei de la tastatură
n = int(input())
# Inițializează matricea cu valorile citite de la tastatură
matrice = []
for i in range(n):
rand = list(map(int, input().split()))
matrice.append(rand)
# Verifică dacă matricea este validă și afișează mesajul corespunzător
if validare_date(n, matrice):
print("Datele sunt introduse corect.")
# Dacă matricea este validă, calculează diferența dintre diagonale și o afișează
D = calculeaza_diferenta_diagonalelor(n, matrice)
print(D)
else:
print("Datele nu corespund restrictiilor impuse.")