0782 - Zona 1
Cerinţa[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n, apoi elementele matricei, linie cu linie.
Date de ieşire[edit | edit source]
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[edit | edit source]
- 1 ⩽ n ⩽ 200
Exemplu[edit | edit source]
- 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[edit | edit source]
<syntaxhighlight lang="python" line>
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()
</syntaxhighlight>