3246 - Echilibrat ab: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: = Cerința = Se dau două numere naturale <code>a</code> și <code>b</code>. Calculați suma numerelor echilibrate din intervalul <code>[a,b]</code>. Un număr este echilibrat dacă are număr par de cifre si are numărul de cifre pare egal cu numărul de cifre impare. De exemplu <code>3427</code> este echilibrat, iar <code>2333</code> nu este. = Date de intrare = Programul citește de la tastatură numerele <code>a</code> și <code>b</code>. = Date de ieșire = Programul...) |
Fără descriere a modificării |
||
(Nu s-a afișat o versiune intermediară efectuată de același utilizator) | |||
Linia 1: | Linia 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/3246/echilibrat-ab] | |||
= Cerința = | ==Cerința== | ||
Se dau două numere naturale | Se dau două numere naturale a și b. Calculați suma numerelor echilibrate din intervalul [a,b]. Un număr este echilibrat dacă are număr par de cifre si are numărul de cifre pare egal cu numărul de cifre impare. De exemplu 3427 este echilibrat, iar 2333 nu este. | ||
= Date de intrare = | ==Date de intrare== | ||
Programul citește de la tastatură numerele | Programul citește de la tastatură numerele a și b. | ||
= Date de ieșire = | ==Date de ieșire== | ||
Programul va afișa pe ecran numărul | Programul va afișa pe ecran numărul s, reprezentând suma numerelor echilibrate din intervalul [a,b]. | ||
= Restricții și precizări = | ==Restricții și precizări== | ||
1 ≤ a ≤ b ≤ 1.000.000 | |||
==Exemplu:== | |||
Intrare | |||
56 71 | |||
Ieșire | |||
509 | |||
==Explicație== | |||
În intervalul [56,71] numerele echilibrate sunt 56, 58, 61, 63, 65, 67, 69, 70, iar suma lor este 509. | |||
==Încărcare soluție== | |||
<syntaxhighlight lang="python" line> | |||
def is_balanced(n): | |||
digits = [int(d) for d in str(n)] | |||
even_count = sum(d % 2 == 0 for d in digits) | |||
odd_count = len(digits) - even_count | |||
return len(digits) % 2 == 0 and even_count == odd_count | |||
= | a, b = map(int, input().split()) | ||
= | sum_balanced = 0 | ||
for i in range(a, b+1): | |||
if is_balanced(i): | |||
sum_balanced += i | |||
print(sum_balanced) | |||
</syntaxhighlight> |
Versiunea curentă din 20 mai 2023 12:47
Sursa: [1]
Cerința
Se dau două numere naturale a și b. Calculați suma numerelor echilibrate din intervalul [a,b]. Un număr este echilibrat dacă are număr par de cifre si are numărul de cifre pare egal cu numărul de cifre impare. De exemplu 3427 este echilibrat, iar 2333 nu este.
Date de intrare
Programul citește de la tastatură numerele a și b.
Date de ieșire
Programul va afișa pe ecran numărul s, reprezentând suma numerelor echilibrate din intervalul [a,b].
Restricții și precizări
1 ≤ a ≤ b ≤ 1.000.000
Exemplu:
Intrare
56 71 Ieșire
509
Explicație
În intervalul [56,71] numerele echilibrate sunt 56, 58, 61, 63, 65, 67, 69, 70, iar suma lor este 509.
Încărcare soluție
def is_balanced(n):
digits = [int(d) for d in str(n)]
even_count = sum(d % 2 == 0 for d in digits)
odd_count = len(digits) - even_count
return len(digits) % 2 == 0 and even_count == odd_count
a, b = map(int, input().split())
sum_balanced = 0
for i in range(a, b+1):
if is_balanced(i):
sum_balanced += i
print(sum_balanced)