3625 - Prelucrari Cifre: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/3625/prelucrari-cifre] | |||
== Cerinţa == | == Cerinţa == | ||
Scrieți un program care citește un număr natural numar și determină: | Scrieți un program care citește un număr natural numar și determină: | ||
Line 13: | Line 14: | ||
== Date de ieşire == | == Date de ieşire == | ||
Programul va afișa pe ecran, pe randuri diferite suma patratelor lui numar, suma cifrelor impare ale lui numar, suma cifrelor divizibile cu 3 ale lui numar, numarul cifrelor strict mai mari decat 5 ale lui numar, produsul cifrelor nenule ale lui numar, suma dintre cifra unitatilor si cifra cea mai semnificativa ale lui numar. | Programul va afișa pe ecran, pe randuri diferite suma patratelor cifrelor lui numar, suma cifrelor impare ale lui numar, suma cifrelor divizibile cu 3 ale lui numar, numarul cifrelor strict mai mari decat 5 ale lui numar, produsul cifrelor nenule ale lui numar, suma dintre cifra unitatilor si cifra cea mai semnificativa ale lui numar. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
Line 23: | Line 24: | ||
; Ieșire | ; Ieșire | ||
: 192 | : 192 | ||
:20 | : 20 | ||
:18 | : 18 | ||
:3 | : 3 | ||
:4536 | : 4536 | ||
:11 | : 11 | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def calculeaza_suma(numar): | |||
# Verificare restricții | |||
if numar < 1 or numar >= 1000000000: | |||
print("Numărul introdus trebuie să fie mai mare sau egal cu 1 și mai mic decât 1000000000.") | |||
else: | |||
# Suma pătratelor cifrelor lui numar | |||
suma_patrate = 0 | |||
for cifra in str(numar): | |||
suma_patrate += int(cifra) ** 2 | |||
print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.") | |||
# Suma cifrelor impare ale lui numar | |||
suma_impare = 0 | |||
for cifra in str(numar): | |||
if int(cifra) % 2 == 1: | |||
suma_impare += int(cifra) | |||
print(f"Suma cifrelor impare ale lui {numar} este {suma_impare}.") | |||
# Suma cifrelor divizibile cu 3 ale lui numar | |||
suma_numere_divibile3 = 0 | |||
for cifra in str(numar): | |||
if int(cifra) % 3 == 0: | |||
suma_numere_divibile3 += int(cifra) | |||
print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.") | |||
# Numărul cifrelor strict mai mari decât 5 ale lui numar | |||
numar_cifre_strict_mai_mari = 0 | |||
for cifra in str(numar): | |||
if int(cifra) > 5: | |||
numar_cifre_strict_mai_mari += 1 | |||
print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.") | |||
# Produsul cifrelor nenule ale lui numar | |||
produs_nenule = 1 | |||
for cifra in str(numar): | |||
if int(cifra) != 0: | |||
produs_nenule *= int(cifra) | |||
print(f"Produsul cifrelor nenule ale lui {numar} este {produs_nenule}.") | |||
# Suma dintre cifra cea mai puțin semnificativă (cifra unităților) și cea mai semnificativă a lui numar | |||
cifra_unitatilor = int(str(numar)[-1]) | |||
cea_mai_semnificativa_cifra = int(str(numar)[0]) | |||
suma_extreme = cifra_unitatilor + cea_mai_semnificativa_cifra | |||
print(f"Suma dintre cifra cea mai puțin semnificativă și cifra cea mai semnificativă ale lui {numar} este {suma_extreme}.") | |||
print("Datele au fost introduse corect.") | |||
if __name__ == "__main__": | |||
numar = int(input("Introduceți un număr natural: ")) | |||
calculeaza_suma(numar) | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
numar = int(input("Introduceți un număr natural: ")) | numar = int(input("Introduceți un număr natural: ")) | ||
# | # Verificare restricții | ||
if numar < 1 or numar >= 1000000000: | |||
print("Numărul introdus trebuie să fie mai mare sau egal cu 1 și mai mic decât 1000000000.") | |||
else: | |||
print( | # Suma pătratelor cifrelor lui numar | ||
suma_patrate = 0 | |||
# Suma cifrelor | for cifra in str(numar): | ||
suma_patrate += int(cifra) ** 2 | |||
for cifra in str(numar) | print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.") | ||
print(f"Suma cifrelor | |||
# Suma cifrelor | # Suma cifrelor impare ale lui numar | ||
suma_impare = 0 | |||
for cifra in str(numar): | for cifra in str(numar): | ||
if int(cifra) % 2 == 1: | |||
suma_impare += int(cifra) | |||
print(f"Suma cifrelor | print(f"Suma cifrelor impare ale lui {numar} este {suma_impare}.") | ||
# | # Suma cifrelor divizibile cu 3 ale lui numar | ||
suma_numere_divibile3 = 0 | |||
for cifra in str(numar): | for cifra in str(numar): | ||
if int(cifra) % 3 == 0: | |||
suma_numere_divibile3 += int(cifra) | |||
print(f" | print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.") | ||
# | # Numărul cifrelor strict mai mari decât 5 ale lui numar | ||
numar_cifre_strict_mai_mari = 0 | |||
for cifra in str(numar): | for cifra in str(numar): | ||
if int(cifra) > 5: | |||
numar_cifre_strict_mai_mari += 1 | |||
print(f" | print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.") | ||
# | # Produsul cifrelor nenule ale lui numar | ||
produs_nenule = 1 | |||
for cifra in str(numar): | |||
if int(cifra) != 0: | |||
print(f" | produs_nenule *= int(cifra) | ||
print(f"Produsul cifrelor nenule ale lui {numar} este {produs_nenule}.") | |||
# Suma dintre cifra cea mai puțin semnificativă (cifra unităților) și cea mai semnificativă a lui numar | |||
cifra_unitatilor = int(str(numar)[-1]) | |||
cea_mai_semnificativa_cifra = int(str(numar)[0]) | |||
suma_extreme = cifra_unitatilor + cea_mai_semnificativa_cifra | |||
print("Datele sunt introduse corect.") | |||
print(f"Suma dintre cifra cea mai puțin semnificativă și cifra cea mai semnificativă ale lui {numar} este {suma_extreme}.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 10:31, 12 May 2023
Sursa: [1]
Cerinţa[edit | edit source]
Scrieți un program care citește un număr natural numar și determină:
- suma pătratelor cifrelor lui numar
- suma cifrelor impare ale lui numar
- suma cifrelor divizibile cu 3 ale lui numar
- numărul cifrelor strict mai mari decât 5 ale lui numar
- produsul cifrelor nenule ale lui numar
- suma dintre cifra cea mai puțin semnificativă (cifra unităților) lui numar
- cifra cea mai semnificativă a lui numar
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul numar.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran, pe randuri diferite suma patratelor cifrelor lui numar, suma cifrelor impare ale lui numar, suma cifrelor divizibile cu 3 ale lui numar, numarul cifrelor strict mai mari decat 5 ale lui numar, produsul cifrelor nenule ale lui numar, suma dintre cifra unitatilor si cifra cea mai semnificativa ale lui numar.
Restricții și precizări[edit | edit source]
- 10 ≤ n ≤ 2.000.000.000
Exemplu[edit | edit source]
- Intrare
- 7360914
- Ieșire
- 192
- 20
- 18
- 3
- 4536
- 11
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def calculeaza_suma(numar):
# Verificare restricții if numar < 1 or numar >= 1000000000: print("Numărul introdus trebuie să fie mai mare sau egal cu 1 și mai mic decât 1000000000.") else: # Suma pătratelor cifrelor lui numar suma_patrate = 0 for cifra in str(numar): suma_patrate += int(cifra) ** 2 print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.")
# Suma cifrelor impare ale lui numar suma_impare = 0 for cifra in str(numar): if int(cifra) % 2 == 1: suma_impare += int(cifra) print(f"Suma cifrelor impare ale lui {numar} este {suma_impare}.")
# Suma cifrelor divizibile cu 3 ale lui numar suma_numere_divibile3 = 0 for cifra in str(numar): if int(cifra) % 3 == 0: suma_numere_divibile3 += int(cifra) print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.")
# Numărul cifrelor strict mai mari decât 5 ale lui numar numar_cifre_strict_mai_mari = 0 for cifra in str(numar): if int(cifra) > 5: numar_cifre_strict_mai_mari += 1 print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.")
# Produsul cifrelor nenule ale lui numar produs_nenule = 1 for cifra in str(numar): if int(cifra) != 0: produs_nenule *= int(cifra) print(f"Produsul cifrelor nenule ale lui {numar} este {produs_nenule}.")
# Suma dintre cifra cea mai puțin semnificativă (cifra unităților) și cea mai semnificativă a lui numar cifra_unitatilor = int(str(numar)[-1]) cea_mai_semnificativa_cifra = int(str(numar)[0]) suma_extreme = cifra_unitatilor + cea_mai_semnificativa_cifra print(f"Suma dintre cifra cea mai puțin semnificativă și cifra cea mai semnificativă ale lui {numar} este {suma_extreme}.") print("Datele au fost introduse corect.")
if __name__ == "__main__":
numar = int(input("Introduceți un număr natural: ")) calculeaza_suma(numar)
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
numar = int(input("Introduceți un număr natural: "))
- Verificare restricții
if numar < 1 or numar >= 1000000000:
print("Numărul introdus trebuie să fie mai mare sau egal cu 1 și mai mic decât 1000000000.")
else:
# Suma pătratelor cifrelor lui numar suma_patrate = 0 for cifra in str(numar): suma_patrate += int(cifra) ** 2 print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.")
# Suma cifrelor impare ale lui numar suma_impare = 0 for cifra in str(numar): if int(cifra) % 2 == 1: suma_impare += int(cifra) print(f"Suma cifrelor impare ale lui {numar} este {suma_impare}.")
# Suma cifrelor divizibile cu 3 ale lui numar suma_numere_divibile3 = 0 for cifra in str(numar): if int(cifra) % 3 == 0: suma_numere_divibile3 += int(cifra) print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.")
# Numărul cifrelor strict mai mari decât 5 ale lui numar numar_cifre_strict_mai_mari = 0 for cifra in str(numar): if int(cifra) > 5: numar_cifre_strict_mai_mari += 1 print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.")
# Produsul cifrelor nenule ale lui numar produs_nenule = 1 for cifra in str(numar): if int(cifra) != 0: produs_nenule *= int(cifra) print(f"Produsul cifrelor nenule ale lui {numar} este {produs_nenule}.")
# Suma dintre cifra cea mai puțin semnificativă (cifra unităților) și cea mai semnificativă a lui numar cifra_unitatilor = int(str(numar)[-1]) cea_mai_semnificativa_cifra = int(str(numar)[0]) suma_extreme = cifra_unitatilor + cea_mai_semnificativa_cifra print("Datele sunt introduse corect.") print(f"Suma dintre cifra cea mai puțin semnificativă și cifra cea mai semnificativă ale lui {numar} este {suma_extreme}.")
</syntaxhighlight>