0998 - Matrice 6
Cerinţa[edit | edit source]
Se consideră o matrice pătratică cu n linii şi n coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele de pe liniile care conţin valoare maximă din matrice vor fi mărite cu valoarea minimă din matrice.
Date de intrare[edit | edit source]
Fișierul de intrare matrice6.in conține pe prima linie numărul n, iar următoarele n linii câte n numere naturale, reprezentând elementele matricei.
Date de ieşire[edit | edit source]
Dacă datele sunt introduse corect,în fișier se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou matricea modificată, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.În cazul contrar,se va afișa în fișier "Datele nu corespund restricțiilor impuse.".
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 100
- elementele matricei vor fi mai mici decât 1 000 000 000
Exemplu[edit | edit source]
- matrice6.in
- 4
- 2 5 3 2
- 2 2 4 4
- 3 2 2 2
- 5 3 5 2
- matrice6.out
- Datele sunt introduse corect.
- 4 7 5 4
- 2 2 4 4
- 3 2 2 2
- 7 5 7 4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def validare(n: int, matrice: list[list[int]]) -> bool:
# Verificăm dacă numărul de linii și coloane ale matricei este cel puțin 1 și cel mult 100 if n < 1 or n > 100: return False
# Verificăm dacă matricea are n linii și n coloane if len(matrice) != n: return False for linie in matrice: if len(linie) != n: return False
# Verificăm dacă toate elementele matricei sunt numere naturale mai mici decât 1 000 000 000 for linie in matrice: for element in linie: if not isinstance(element, int) or element < 0 or element >= 1000000000: return False
return True
def rezolvare(n: int, matrice: list[list[int]]) -> list[list[int]]:
# Găsim valoarea maximă și valoarea minimă din matrice Max = matrice[0][0] Min = matrice[0][0] for linie in matrice: for element in linie: if element > Max: Max = element if element < Min: Min = element
# Identificăm liniile care conțin valoarea maximă liniile_maximului = [] for i, linie in enumerate(matrice): if Max in linie: liniile_maximului.append(i)
# Adăugăm valoarea minimă la fiecare element de pe liniile identificate anterior for i in liniile_maximului: for j in range(n): matrice[i][j] += Min
return matrice
if __name__ == '__main__':
with open('matrice6.in', 'r') as fin: n = int(fin.readline()) matrice = [list(map(int, fin.readline().split())) for _ in range(n)]
if validare(n, matrice): matrice_modificata = rezolvare(n, matrice) with open('matrice6.out', 'w') as fout: fout.write("Datele sunt introduse corect.\n") for linie in matrice_modificata: fout.write(' '.join(str(element) for element in linie) + '\n') else: with open("matrice6.out", "w") as f_out: fout.write("Datele nu corespund restricțiilor impuse.")
</syntaxhighlight>