0729 - Zona
De la Universitas MediaWiki
Cerinţa
Se dă o matrice pătratică cu n linii și n coloane și elemente numere naturale mai mici decât 1000. Să se afișeze în ordine strict crescătoare valorile situate sub diagonala principală și deasupra diagonalei secundare. Dacă o valoare apare în zona respectivă de mai multe ori, se va afișa o singură dată.
Date de intrare
Programul citește de la tastatură numărul n, apoi 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,în ordine strict crescătoare, valorile cerute, separate prin spații.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".
Restricții și precizări
- 1 ⩽ n ⩽ 200
Exemplu
- Intrare
- 6
- 10 8 5 8 4 2
- 6 5 3 1 3 8
- 8 1 4 7 8 8
- 5 1 9 6 6 1
- 8 9 10 1 3 6
- 8 2 3 3 9 6
- Ieșire
- Datele sunt introduse corect.
- 1 5 6 8
Rezolvare
# Functia de validare pentru matricea de intrare.
def validare(n: int, a: list[list[int]]) -> bool:
# Verificăm dacă n se află în intervalul specificat
if n < 1 or n > 200:
return False
# Verificăm dacă fiecare element al matricei se află în intervalul [0, 1000)
for i in range(n):
for j in range(n):
if a[i][j] < 0 or a[i][j] >= 1000:
return False
return True
# Funcția care rezolvă problema și returnează valorile cerute.
def rezolva_matrice(n: int, a: list[list[int]]) -> list[int]:
# Inițializăm un vector v de dimensiune 1000, initial cu valori 0
v = [0] * 1000
# Parcurgem matricea și setăm elementele corespunzătoare din v pe 1 dacă se află sub diagonala principală și
# deasupra diagonalei secundare
for i in range(n):
for j in range(n):
if i > j and i + j < n - 1:
v[a[i][j]] = 1
# Inițializam o lista rezultat cu valorile de 0 și apoi adaugăm valorile de 1 din v in ordine crescătoare
rezultat = []
for i in range(1000):
if v[i] == 1:
rezultat.append(i)
return rezultat
# Programul principal
if __name__ == '__main__':
# Citim n și matricea de la tastatură
n = int(input())
a = []
for i in range(n):
a.append(list(map(int, input().split())))
# Verificăm dacă matricea îndeplineste cerințele problemei
if validare(n, a):
# Dacă matricea este validă, rezolvăm problema și afișăm rezultatul
rezultat = rezolva_matrice(n, a)
print("Datele sunt introduse corect.")
print("Valorile cerute sunt:", " ".join(map(str, rezultat)))
else:
# Dacă matricea nu este valida, afișăm un mesaj corespunzator
print("Datele nu corespund restricțiilor impuse.")