4163 - Seif

From Bitnami MediaWiki
Revision as of 17:06, 2 June 2024 by Benzar Ioan (talk | contribs) (Pagină nouă: == Cerința == Într-un tărâm îndepărtat, un grup de detectivi încearcă să deschidă un seif foarte complex. Seiful este protejat de o serie de coduri numerice dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă un cod numeric care trebuie decodat. Detectivii trebuie să parcurgă toate codurile, trecând o singură dată prin fiecare celulă, pentru a calcula suma totală a valorilor din matrice și astfel să descopere codul final al seifului....)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Într-un tărâm îndepărtat, un grup de detectivi încearcă să deschidă un seif foarte complex. Seiful este protejat de o serie de coduri numerice dispuse într-o matrice pătratică. Fiecare celulă a matricei reprezintă un cod numeric care trebuie decodat. Detectivii trebuie să parcurgă toate codurile, trecând o singură dată prin fiecare celulă, pentru a calcula suma totală a valorilor din matrice și astfel să descopere codul final al seifului.

Date de intrare

Programul citește de la tastatură dimensiunea n a matricei pătratice (n x n) și valorile din matrice, fiecare rând fiind pe o linie separată.

Date de ieșire

Pe ecran se va afișa suma totală a valorilor din matrice, adică codul final al seifului.

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_suma_totala(matrice):

   suma_totala = sum(sum(rand) for rand in matrice)
   return suma_totala

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.")
       suma_totala = calculeaza_suma_totala(matrice)
       print(suma_totala)
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

if __name__ == "__main__":

   main()

</syntaxhighlight>