0782 - Zona 1
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 care apar sub diagonala principală și sub diagonala secundară de cel puţin 2 ori. Fiecare valoare 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 numărul, în ordine strict crescătoare, valorile cerute, separate printr-un spaţiu.Î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 3 2 3 6
- 8 9 3 3 9 6
- Ieșire
- Datele sunt introduse corect.
- 3 9
Rezolvare
def validare_date(n, a):
# Verificăm dacă matricea respectă restricția impusă
# și anume să conțină elemente mai mici decât 200.
for i in range(n):
for j in range(n):
if a[i][j] >= 200:
return False
return True
def valorile_sub_diagonala(n, a):
# Parcurgem matricea și adaugăm elementele sub diagonala secundară
# și peste diagonala principală în lista v.
v = []
for i in range(n):
for j in range(n):
if i > j and i + j > n - 1:
v.append(a[i][j])
# Sortăm lista v în ordine crescătoare și căutăm elementele care se repetă și apar de cel puțin 2 ori.
v.sort()
rezultat = []
for i in range(1, len(v)):
if v[i] == v[i-1] and v[i] not in rezultat:
rezultat.append(v[i])
return rezultat
if __name__ == "__main__":
# Citim dimensiunea matricei și elementele acesteia.
n = int(input())
a = []
for i in range(n):
linie = input()
a.append([int(x) for x in linie.split()])
# Verificăm dacă matricea este validă și afișăm valorile care respectă condițiile problemei, în ordine crescătoare.
if not validare_date(n, a):
print("Datele nu corespund restrictiilor impuse.")
else:
rezultat = valorile_sub_diagonala(n, a)
print("Datele sunt introduse corect.")
for x in rezultat:
print(x, end=" ")
print()