4141 - Autostrada 1: Diferență între versiuni

De la Universitas 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...)
 
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 ⩽’’’n’’’ ⩽ 1000
*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()