3625 - Prelucrari Cifre: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
 
(One intermediate revision 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 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>


Line 76: Line 134:
     cea_mai_semnificativa_cifra = int(str(numar)[0])
     cea_mai_semnificativa_cifra = int(str(numar)[0])
     suma_extreme = cifra_unitatilor + cea_mai_semnificativa_cifra
     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}.")
     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: "))

  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>