0223 - Min Cols 1: Diferență între versiuni
(Pagină nouă: == Enunț == Se consideră un tablou bidimensional cu '''n''' linii şi '''n''' coloane ce conţine numere naturale cu cel mult două cifre fiecare. == Cerinţa == Să se determine ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor. == Date de intrare == Fişierul de intrare '''mincols1.in''' conţine pe prima linie numărul '''n''', iar pe următoarele '''n''' linii câte '''n''' numere naturale separate prin sp...) |
|||
Linia 36: | Linia 36: | ||
return True | return True | ||
# | # Funcție care determină ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor. | ||
def ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a): | def ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a): | ||
Versiunea curentă din 2 mai 2023 18:57
Enunț
Se consideră un tablou bidimensional cu n linii şi n coloane ce conţine numere naturale cu cel mult două cifre fiecare.
Cerinţa
Să se determine ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor.
Date de intrare
Fişierul de intrare mincols1.in conţine pe prima linie numărul n, iar pe următoarele n linii câte n numere naturale separate prin spaţii, reprezentând elementele tabloului.
Date de ieşire
Dacă datele sunt introduse corect,în fişierul de ieşire mincols1.out se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou va conţine un singur număr, reprezentând valoarea cerută.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".
Restricții și precizări
- 2 ⩽ n ⩽ 30
- dacă în matrice nu există asemenea elemente, se va afișa mesajul NU EXISTA
Exemplu
- mincols1.in
- 4
- 3 4 90 10
- 25 2 7 9
- 18 3 10 4
- 3 7 20 3
- mincols1.out
- Datele sunt introduse corect.
- 1
Explicație
Dintre valorile de pe diagonala secundară, sunt minime pe coloanele lor 7 şi 3. Produsul lor este 21, iar ultima cifră este 1.
Rezolvare
# Funcție care verifică dacă datele de intrare respectă condițiile problemei.
def validare(n, a):
if n < 2 or n > 30:
return False
for i in range(n):
for j in range(n):
if a[i][j] < 0 or a[i][j] > 99:
return False
return True
# Funcție care determină ultima cifră a produsului elementelor de pe diagonala secundară cu proprietatea că sunt minime pe coloanele lor.
def ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a):
p = 1
exista_minim_pe_coloane = False
for i in range(n):
j = n - i - 1 # indicii elementelor de pe diagonala secundară
minim_pe_coloana = min(a[k][j] for k in range(n))
if a[i][j] == minim_pe_coloana:
exista_minim_pe_coloane = True
p = (p * a[i][j]) % 10
if exista_minim_pe_coloane:
return p
else:
print("NU EXISTA")
if __name__ == "__main__":
# Citim datele de intrare din fișierul "mincols1.in".
with open("mincols1.in") as f:
n = int(f.readline())
a = [list(map(int, f.readline().split())) for _ in range(n)]
# Verificăm dacă datele de intrare sunt valide.
if validare(n, a):
# Apelăm funcția care calculează rezultatul cerut.
rezultat = ultima_cifra_produsului_diag_sec_min_pe_coloane(n, a)
if rezultat is not None:
# Scriem rezultatul în fișierul de ieșire "mincols1.out".
with open("mincols1.out", "w") as g:
g.write("Datele sunt introduse corect.\n")
g.write(str(rezultat))
else:
# Scriem un mesaj de eroare în fișierul de ieșire "mincols1.out".
with open("mincols1.out", "w") as g:
g.write("Datele nu corespund restricțiilor impuse.")