4141 - Autostrada 1: Diferență între versiuni
(Pagină nouă: == Cerința == Într-un ținut îndepărtat, inginerii trebuie să construiască o autostradă care traversează un oraș format dintr-o rețea de străzi dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă o intersecție a străzilor și are o valoare numerică ce indică costul de construcție la acea intersecție. Inginerii trebuie să parcurgă toate intersecțiile, trecând o singură dată prin fiecare celulă, pentru a calcula costul total al co...) |
|||
Linia 9: | Linia 9: | ||
Pe ecran se va afișa costul total al construcției autostrăzii, adică suma valorilor din toate celulele matricei. | Pe ecran se va afișa costul total al construcției autostrăzii, adică suma valorilor din toate celulele matricei. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
*1 ⩽ | *1 ⩽'''n''' ⩽ 1000 | ||
== Exemplu 1 == | == Exemplu 1 == | ||
;Intrare | ;Intrare |
Versiunea de la data 2 iunie 2024 17:00
Cerința
Într-un ținut îndepărtat, inginerii trebuie să construiască o autostradă care traversează un oraș format dintr-o rețea de străzi dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă o intersecție a străzilor și are o valoare numerică ce indică costul de construcție la acea intersecție. Inginerii trebuie să parcurgă toate intersecțiile, trecând o singură dată prin fiecare celulă, pentru a calcula costul total al construcției autostrăzii.
Date de intrare
Programul citește de la tastatură:
Un număr întreg n reprezentând dimensiunea matricei pătratice (n x n). Valorile din matrice, fiecare rând fiind pe o linie separată.
Date de ieșire
Pe ecran se va afișa costul total al construcției autostrăzii, adică suma valorilor din toate celulele matricei.
Restricții și precizări
- 1 ⩽n ⩽ 1000
Exemplu 1
- Intrare
3
1 2 3
4 5 6
7 8 9
- Iesire
45
Rezolvare
def citeste_matrice_patratica():
try:
n = int(input("Introduceți dimensiunea matricii pătratice (n): "))
matrice = []
for _ in range(n):
rand = list(map(int, input().split()))
if len(rand) != n:
return None
matrice.append(rand)
return matrice
except ValueError:
return None
def valideaza_matrice(matrice):
if matrice:
n = len(matrice)
if 1 <= n <= 1000:
if all(len(rand) == n for rand in matrice):
if all(-10**6 <= elem <= 10**6 for rand in matrice for elem in rand):
return True
return False
def calculeaza_cost_total(matrice):
cost_total = sum(sum(rand) for rand in matrice)
return cost_total
def main():
print("Introduceți matricea pătratică:")
matrice = citeste_matrice_patratica()
if matrice is None:
print("Datele de intrare nu corespund restricțiilor impuse.")
return
if valideaza_matrice(matrice):
print("Datele de intrare corespund restricțiilor impuse.")
cost_total = calculeaza_cost_total(matrice)
print(cost_total)
else:
print("Datele de intrare nu corespund restricțiilor impuse.")
if __name__ == "__main__":
main()