3625 - Prelucrari Cifre

From Bitnami MediaWiki

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: "))

  1. 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>