3935 - determinanta: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
== Cerinta == | == Cerinta == | ||
Se consideră o matrice cu '''n''' linii şi '''n''' coloane şi elemente egale cu 0 sau 1. Să se calculeze determinantul matricei. | Se consideră o matrice cu '''n''' linii şi '''n''' coloane şi elemente egale cu '''0''' sau '''1'''. Să se calculeze determinantul matricei. | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare '''determinantain.txt''' conține pe prima linie numărul n, iar pe următoarele n linii câte o pereche de numere naturale l, c, reprezentând faptul că elementul matricei de pe linia l şi coloana c are valoarea 1. | Fișierul de intrare '''determinantain.txt''' conține pe prima linie numărul '''n''', iar pe următoarele '''n''' linii câte o pereche de numere naturale '''l, c''', reprezentând faptul că elementul matricei de pe linia '''l''' şi coloana '''c''' are valoarea '''1'''. | ||
== Date de iesire == | == Date de iesire == | ||
Line 15: | Line 15: | ||
*2 ⩽ '''n''' ⩽ 100.000 | *2 ⩽ '''n''' ⩽ 100.000 | ||
*1 ⩽ '''l,c''' ⩽ n | *1 ⩽ '''l,c''' ⩽ n | ||
*Exceptând elementele din poziţiile (l,c), care sunt egale cu 1, celelalte elemente ale matricei au valoarea 0. | *Exceptând elementele din poziţiile '''(l,c)''', care sunt egale cu '''1''', celelalte elemente ale matricei au valoarea '''0'''. | ||
== Exemplul 1 == | == Exemplul 1 == |
Revision as of 07:59, 27 December 2023
Cerinta
Se consideră o matrice cu n linii şi n coloane şi elemente egale cu 0 sau 1. Să se calculeze determinantul matricei.
Date de intrare
Fișierul de intrare determinantain.txt conține pe prima linie numărul n, iar pe următoarele n linii câte o pereche de numere naturale l, c, reprezentând faptul că elementul matricei de pe linia l şi coloana c are valoarea 1.
Date de iesire
Fișierul de ieșire determinantaout.txt va conține pe prima linie valoarea determinantului matricei.
Restrictii si precizari
- 2 ⩽ n ⩽ 100.000
- 1 ⩽ l,c ⩽ n
- Exceptând elementele din poziţiile (l,c), care sunt egale cu 1, celelalte elemente ale matricei au valoarea 0.
Exemplul 1
- Intrare
- determinantain.txt
- 3
- 1 1
- 2 2
- 3 3
- Iesire
- Datele introduse corespund restrictiilor impuse.
- determinantaout.txt
- 1
Exemplul 2
- Intrare
- determinantain.txt
- 3
- 2 2
- 3 3
- 2 2
- Iesire
- Datele introduse nu corespund restrictiilor impuse
- determinantaout.txt
Rezolvare
<syntaxhighlight lang="python3" line="1">
def citeste_matrice_din_fisier(file_path):
with open(file_path, 'r') as file: n = int(file.readline()) matrice = np.zeros((n, n), dtype=int) for _ in range(n): l, c = map(int, file.readline().split()) matrice[l-1][c-1] = 1 return matrice
def calculeaza_determinant(matrice):
return int(round(np.linalg.det(matrice)))
def scrie_determinant_in_fisier(file_path, determinant):
with open(file_path, 'w') as file: file.write(str(determinant) + '\n')
def main():
# Citeste matricea din fisier matrice = citeste_matrice_din_fisier('determinantain.txt')
# Calculeaza determinantul determinant = calculeaza_determinant(matrice)
# Scrie determinantul in fisier scrie_determinant_in_fisier('determinantaout.txt', determinant)
if __name__ == "__main__":
main()
import numpy as np
def citeste_matrice_din_fisier(file_path):
with open(file_path, 'r') as file: n = int(file.readline()) matrice = np.zeros((n, n), dtype=int) for _ in range(n): l, c = map(int, file.readline().split()) matrice[l-1][c-1] = 1 return matrice
def calculeaza_determinant(matrice):
return int(round(np.linalg.det(matrice)))
def scrie_determinant_in_fisier(file_path, determinant):
with open(file_path, 'w') as file: file.write(str(determinant) + '\n')
def main():
# Citeste matricea din fisier matrice = citeste_matrice_din_fisier('determinantain.txt')
# Calculeaza determinantul determinant = calculeaza_determinant(matrice)
# Scrie determinantul in fisier scrie_determinant_in_fisier('determinantaout.txt', determinant)
if __name__ == "__main__":
main()
</syntaxhighlight>