3077 - Suma Prefixe: Difference between revisions

From Bitnami MediaWiki
No edit summary
Pop Giulia (talk | contribs)
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/3077/suma-prefixe]
Sursa: [https://www.pbinfo.ro/probleme/3077/suma-prefixe]


== Cerința ==
==Cerința==
Scrieți un program care citește un număr natural nenul '''numar''' și care calculează suma '''suma''' tuturor numerelor distincte prefixe pentru '''numar'''.
Scrieți un program care citește un număr natural nenul n și care calculează suma S tuturor numerelor distincte prefixe pentru n.


== Date de intrare ==
==Date de intrare==
Programul citește de la tastatură numărul '''numar''', cu semnificația din enunț.
Programul citește de la tastatură numărul n, cu semnificația din enunț.


== Date de ieșire ==
==Date de ieșire==
Programul va afișa pe ecran '''suma'''.
Programul va afișa pe ecran numărul S.


==Restricții și precizări==
1 ≤ n ≤ 2.000.000.000


== Restricții și precizări ==
==Exemplu==
* 1 ⩽ numar ⩽ 2.000.000.000
;Intrare
== Exemplu ==
 
; Intrare
:12345
: 12345
 
; Ieșire
;Iesire
: 13715
 
== Explicație ==
:13715
S-a citit numărul numar=12345 iar suma calculată este suma=13715 (=1+12+123+1234+12345).
 
== Rezolvare ==
==Rezolvare==
<syntaxhighlight lang="python" line>
def calculeaza_suma_prefixe(numar, prefix=0):
  if numar == 0:
        return prefix
    suma = 0
  for cifra in range(1, numar % 10 + 1):
        suma += calculeaza_suma_prefixe(numar // 10, prefix + cifra)
    return suma
n = int(input("Introduceți un număr natural nenul: "))
suma_prefixe = calculeaza_suma_prefixe(n)
print("Suma tuturor prefixelor distincte pentru numărul", n, "este", suma_prefixe)
</syntaxhighlight>

Latest revision as of 12:32, 20 May 2023

Sursa: [1]

Cerința[edit | edit source]

Scrieți un program care citește un număr natural nenul n și care calculează suma S tuturor numerelor distincte prefixe pentru n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, cu semnificația din enunț.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numărul S.

Restricții și precizări[edit | edit source]

1 ≤ n ≤ 2.000.000.000

Exemplu[edit | edit source]

Intrare
12345
Iesire
13715

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def calculeaza_suma_prefixe(numar, prefix=0):

  if numar == 0:
       return prefix
    suma = 0
 for cifra in range(1, numar % 10 + 1):
       suma += calculeaza_suma_prefixe(numar // 10, prefix + cifra)
   return suma

n = int(input("Introduceți un număr natural nenul: ")) suma_prefixe = calculeaza_suma_prefixe(n) print("Suma tuturor prefixelor distincte pentru numărul", n, "este", suma_prefixe) </syntaxhighlight>