1306 - SumChef: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/1306/sumchef - SumChef] ---- == Cerinţa == Fiind dat un şir cu '''numar''' elemente numere naturale, să se calculeze suma '''s''' cuburilor cifrelor tuturor numerelor din şir. == Date de intrare == 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 == Dacă datele sunt introduse corect, pe ecran se...
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 29: Line 29:
; Intrare
; Intrare
: 5
: 5
: 1 11 111 1111 11111
: 1 11 111 1111 101
; Ieșire
; Ieșire
: Datele sunt corecte.
: Datele sunt corecte.
: 15
: 12
<br>
<br>
== Rezolvare ==  
== Rezolvare ==  
Line 39: Line 39:


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




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>


==Explicaţie cod==


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


</syntaxhighlight>
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 | 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.