3625 - Prelucrari Cifre: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
mNo edit summary
 
(6 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 fabulos care citește un număr natural n și determină:
Scrieți un program care citește un număr natural numar și determină:
*suma pătratelor cifrelor lui n
*suma pătratelor cifrelor lui numar
*suma cifrelor impare ale lui n
*suma cifrelor impare ale lui numar
*suma cifrelor divizibile cu 3 ale lui n
*suma cifrelor divizibile cu 3 ale lui numar
*numărul cifrelor strict mai mari decât 5
*numărul cifrelor strict mai mari decât 5 ale lui numar
*produsul cifrelor nenule ale lui n
*produsul cifrelor nenule ale lui numar
*suma dintre cifra cea mai puțin semnificativă (cifra unităților) lui n
*suma dintre cifra cea mai puțin semnificativă (cifra unităților) lui numar
*cifra cea mai semnificativă a lui n
*cifra cea mai semnificativă a lui numar


== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul n.
Programul citește de la tastatură numărul numar.


== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran, pe randuri diferite suma patratelor a lui n, suma cifrelor impare a lui n, suma cifrelor divizibile cu 3 a lui n, numarul cifrelor strict mai mari decat 5 a lui n, produsul cifrelor nenule a lui n, suma dintre cifra unitatilor a lui n si cifra cea mai semnificativa a lui n.
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: "))


# Suma pătratelor cifrelor lui n
# Verificare restricții
suma_patrate = 0
if numar < 1 or numar >= 1000000000:
for cifra in str(numar):
     print("Numărul introdus trebuie să fie mai mare sau egal cu 1 și mai mic decât 1000000000.")
     suma_patrate += int(cifra) ** 2
else:
print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.")
    # Suma pătratelor cifrelor lui numar
 
    suma_patrate = 0
# Suma cifrelor impare ale lui n
    for cifra in str(numar):
suma_impare = 0
         suma_patrate += int(cifra) ** 2
for cifra in str(numar):
    print(f"Suma pătratelor cifrelor lui {numar} este {suma_patrate}.")
    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 n
    # Suma cifrelor impare ale lui numar
suma_numere_divibile3 = 0
    suma_impare = 0
for cifra in str(numar):
    for cifra in str(numar):
    if int(cifra) % 3 == 0:
        if int(cifra) % 2 == 1:
        suma_numere_divibile3 += int(cifra)
            suma_impare += int(cifra)
print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.")
    print(f"Suma cifrelor impare ale lui {numar} este {suma_impare}.")


# Numărul cifrelor strict mai mari decât 5
    # Suma cifrelor divizibile cu 3 ale lui numar
numar_cifre_strict_mai_mari = 0
    suma_numere_divibile3 = 0
for cifra in str(numar):
    for cifra in str(numar):
    if int(cifra) > 5:
        if int(cifra) % 3 == 0:
        numar_cifre_strict_mai_mari += 1
            suma_numere_divibile3 += int(cifra)
print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.")
    print(f"Suma cifrelor divizibile cu 3 ale lui {numar} este {suma_numere_divibile3}.")


# Produsul cifrelor nenule ale lui n
    # Numărul cifrelor strict mai mari decât 5 ale lui numar
produs_nenule = 1
    numar_cifre_strict_mai_mari = 0
for cifra in str(numar):
    for cifra in str(numar):
    if int(cifra) != 0:
        if int(cifra) > 5:
        produs_nenule *= int(cifra)
            numar_cifre_strict_mai_mari += 1
print(f"Produsul cifrelor nenule ale lui {numar} este {produs_nenule}.")
    print(f"Numărul cifrelor strict mai mari decât 5 din {numar} este {numar_cifre_strict_mai_mari}.")


# Suma dintre cifra cea mai puțin semnificativă (cifra unităților) și cea mai semnificativă a lui n
    # Produsul cifrelor nenule ale lui numar
cea_mai_putin_semnificativa_cifra = int(str(numar)[-1])
    produs_nenule = 1
cea_mai_semnificativa_cifra = int(str(numar)[0])
    for cifra in str(numar):
suma_extreme = cea_mai_putin_semnificativa_cifra + cea_mai_semnificativa_cifra
        if int(cifra) != 0:
print(f"Suma dintre cifra cea mai puțin semnificativă și cea mai semnificativă a lui {numar} este {suma_extreme}.")
            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: "))

  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>