4141 - Autostrada 1: Difference between revisions

From Bitnami MediaWiki
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...
 
Line 9: Line 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 ⩽’’’n’’’ ⩽ 1000
*1 ⩽'''n''' ⩽ 1000
 
== Exemplu 1 ==
== Exemplu 1 ==
;Intrare
;Intrare

Revision as of 17:00, 2 June 2024

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

<syntaxhighlight lang="python" line> 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()

</syntaxhighlight>