1306 - SumChef: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
No edit summary
 
Line 48: Line 48:




def conform_restrictiilor():
def conform_restrictiilor(numar, vector):
    numar = int(input())
     if numar < 1 or numar > 2000000:
     if numar < 1 or numar > 2000000:
         print("Datele nu sunt comform restricțiilor impuse.")
         print("Datele nu sunt comform restricțiilor impuse.")
         exit()
         return False
    vector = list(map(int, input().split()))
     for x in vector:
     for x in vector:
         if x > 9999 or x < 1:
         if x > 9999 or x < 1:
             print("Datele nu sunt comform restricțiilor impuse.")
             print("Datele nu sunt comform restricțiilor impuse.")
             exit()
             return False
     print("Datele sunt corecte.")
     print("Datele sunt corecte.")
     return vector, numar
     return True




if __name__ == '__main__':
if __name__ == '__main__':
     vector, numar = conform_restrictiilor()
    numar = int(input())
    numere(vector, numar)
     vector = list(map(int, input().split()))
    if conform_restrictiilor(numar, vector) is True:
        numere(vector, numar)




</syntaxhighlight>
</syntaxhighlight>
==Explicaţie cod==
Acest cod are rolul de a calcula suma cuburilor cifrelor fiecarui element dintr-un '''vector dat'''.
Funcția '''numere(vector, numar)''':
Parametrii de intrare: '''vector''' este un vector de numere întregi și numar este numărul de elemente din '''vector'''.
Funcționare: Parcurge fiecare element din '''vector''' și calculează suma cuburilor cifrelor fiecărui element. Apoi, adaugă această sumă la '''suma totală''' și o afișează la final.
Rezultatul returnat: Funcția nu returnează nicio valoare, ci afișează direct suma cuburilor cifrelor.
Funcția '''conform_restrictiilor(numar, vector)''':
Parametrii de intrare: '''numar''' este numărul de elemente din '''vector''' și '''vector''' este vectorul de numere întregi.
Funcționare: Verifică dacă datele intră în restricțiile impuse în enunț, adică numar trebuie să fie între 1 și 2.000.000 și fiecare element din vector trebuie să fie între 1 și 9999.
Rezultatul returnat: Dacă datele sunt conforme restricțiilor, funcția afișează "Datele sunt corecte." și returnează True. În caz contrar, afișează "Datele nu sunt conforme restricțiilor impuse." și returnează False.
Blocul principal:
Citim numărul de elemente din '''vector''' și apoi vectorul în sine.
Apelăm funcția '''conform_restrictiilor''' pentru a verifica datele.
Dacă datele sunt corecte, apelăm funcția numere pentru a calcula suma cuburilor cifrelor.

Latest revision as of 13:31, 30 April 2023

Sursa: - SumChef


Cerinţa[edit]

Fiind dat un şir cu numar elemente numere naturale, să se calculeze suma s cuburilor cifrelor tuturor numerelor din şir.

Date de intrare[edit]

Programul citește de la tastatură numărul numar, iar apoi numar numere naturale, separate prin spaţii, reprezentând elementele vectorului vector.

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se afișează pe ecran numărul s, reprezentând suma cuburilor cifrelor tuturor numerelor din şir. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricţii şi precizări[edit]

  • 1 ⩽ numar ⩽ 2.000.000
  • numerele din şir au cel mult 4 cifre

Exemple[edit]

Exemplul 1[edit]

Intrare
3
24 120 51
Ieșire
Datele sunt corecte.
207

Exemplul 2[edit]

Intrare
10
100 1000 100 20 1 20 30 10 98 99999
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3[edit]

Intrare
5
1 11 111 1111 101
Ieșire
Datele sunt corecte.
12


Rezolvare[edit]

<syntaxhighlight lang="python" line>

  1. 1306 SumChef

def numere(vector, numar):

   suma = 0
   for i in range(numar):
       element = vector[i]
       while element != 0:
           suma += (element % 10) ** 3
           element //= 10
   print(suma)


def conform_restrictiilor(numar, vector):

   if numar < 1 or numar > 2000000:
       print("Datele nu sunt comform restricțiilor impuse.")
       return False
   for x in vector:
       if x > 9999 or x < 1:
           print("Datele nu sunt comform restricțiilor impuse.")
           return False
   print("Datele sunt corecte.")
   return True


if __name__ == '__main__':

   numar = int(input())
   vector = list(map(int, input().split()))
   if conform_restrictiilor(numar, vector) is True:
       numere(vector, numar)


</syntaxhighlight>

Explicaţie cod[edit]

Acest cod are rolul de a calcula suma cuburilor cifrelor fiecarui element dintr-un vector dat.

Funcția numere(vector, numar):

Parametrii de intrare: vector este un vector de numere întregi și numar este numărul de elemente din vector. Funcționare: Parcurge fiecare element din vector și calculează suma cuburilor cifrelor fiecărui element. Apoi, adaugă această sumă la suma totală și o afișează la final. Rezultatul returnat: Funcția nu returnează nicio valoare, ci afișează direct suma cuburilor cifrelor. Funcția conform_restrictiilor(numar, vector):

Parametrii de intrare: numar este numărul de elemente din vector și vector este vectorul de numere întregi. Funcționare: Verifică dacă datele intră în restricțiile impuse în enunț, adică numar trebuie să fie între 1 și 2.000.000 și fiecare element din vector trebuie să fie între 1 și 9999. Rezultatul returnat: Dacă datele sunt conforme restricțiilor, funcția afișează "Datele sunt corecte." și returnează True. În caz contrar, afișează "Datele nu sunt conforme restricțiilor impuse." și returnează False. Blocul principal:

Citim numărul de elemente din vector și apoi vectorul în sine. Apelăm funcția conform_restrictiilor pentru a verifica datele. Dacă datele sunt corecte, apelăm funcția numere pentru a calcula suma cuburilor cifrelor.