1306 - SumChef

From Bitnami MediaWiki
Revision as of 13:31, 30 April 2023 by Csula Beatrice (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursa: - SumChef


Cerinţa[edit | edit source]

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

Date de intrare[edit | edit source]

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 | edit source]

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 | edit source]

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

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

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

Exemplul 2[edit | edit source]

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

Exemplul 3[edit | edit source]

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


Rezolvare[edit | edit source]

<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 | edit source]

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.