1398 - Determinant
Cerința[edit | edit source]
Se dă o matrice pătratică de dimensiune n
. Să se calculeze determinantul ei.
Date de intrare[edit | edit source]
Fișierul de intrare determinantIN.txt
conține pe prima linie numărul n
, iar pe următoarele n
linii câte n
numere întregi, reprezentând elementele matricei.
Date de ieșire[edit | edit source]
Fișierul de ieșire determinantOUT.txt
va conține pe prima linie numărul D
, reprezentând valoarea determinantului.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 10
Exemplul 1[edit | edit source]
determinantIN.txt
3 1 -2 3 0 1 -1 2 1 -3
determinantOUT.txt
-4
Exemplul 2[edit | edit source]
determinantIN.txt
20 1 -2 3 0 1 -1 2 1 -3
determinantOUT.txt
Datele de intrare nu respectas restrictiile impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def are_restricții_valide(n, matrice):
if not (1 <= n <= 10): return False for linie in matrice: if len(linie) != n: return False return True
def calcul_cofactor(matrice, linie, coloana):
submatrice = [row[:coloana] + row[coloana + 1:] for row in (matrice[:linie] + matrice[linie + 1:])] semn = (-1) ** (linie + coloana) return semn * calcul_determinant(submatrice)
def calcul_determinant(matrice):
n = len(matrice) if n == 1: return matrice[0][0] elif n == 2: return matrice[0][0] * matrice[1][1] - matrice[0][1] * matrice[1][0] else: determinant = 0 for coloana in range(n): determinant += matrice[0][coloana] * calcul_cofactor(matrice, 0, coloana) return determinant
- Citirea datelor de intrare
try:
with open("determinantIN.txt", "r") as file_in: n = int(file_in.readline().strip()) matrice = [list(map(int, file_in.readline().split())) for _ in range(n)]
except FileNotFoundError:
with open("determinantOUT.txt", "w") as file_out: file_out.write("Fișierul determinantIN.txt nu a fost găsit.") exit()
except Exception as e:
with open("determinantOUT.txt", "w") as file_out: file_out.write(f"Eroare la citirea datelor de intrare: {str(e)}") exit()
- Verificarea restricțiilor
if not are_restricții_valide(n, matrice):
with open("determinantOUT.txt", "w") as file_out: file_out.write("Datele de intrare nu respecta restrictiile impuse.") exit()
- Calculul determinantului
determinant = calcul_determinant(matrice)
- Scrierea rezultatului în fișierul de ieșire
with open("determinantOUT.txt", "w") as file_out:
file_out.write(str(determinant))
</syntaxhighlight>