0108 - Aparitii 2

From Bitnami MediaWiki

Sursa: [1]

Cerinţa[edit | edit source]

Să se scrie un program care să determine numărul de apariţii ale primei cifre în scrierea unui număr natural citit de la tastatură.

Date de intrare[edit | edit source]

Programul va citi de la tastatură un număr natural.

Date de ieşire[edit | edit source]

Programul va afişa pe ecran numărul de apariţii ale primei cifre în scrierea numărului citit.

Restricții și precizări[edit | edit source]

  • numărul citit va fi mai mic decât 2.000.000.000

Exemplu[edit | edit source]

Intrare
57051
Ieșire
2

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

def determina_prima_cifra_si_aparitii(numar):

   """
   Determină prima cifră a unui număr și numără aparițiile sale în număr.
   :param numar: Numărul dat.
   :return: Un tuplu conținând prima cifră și numărul de apariții ale primei cifre în număr.
   """
   prima_cifra = int(str(numar)[0])
   contor = 0
   while numar > 0:
       if numar % 10 == prima_cifra:
           contor += 1
       numar //= 10
   return prima_cifra, contor


def main():

   # Citim numărul natural și validăm intrarea
   while True:
       try:
           numar = int(input("Introduceți un număr natural: "))
           if numar <= 0:
               print("Numărul introdus trebuie să fie un număr natural pozitiv!")
               continue
           break
       except ValueError:
           print("Nu ați introdus un număr natural pozitiv! Vă rugăm să încercați din nou.")
   # Determinăm prima cifră și numărul de apariții
   prima_cifra, numar_aparitii = determina_prima_cifra_si_aparitii(numar)
   # Afișăm rezultatul
   print("Datele sunt introduse corect.")
   print(f"Numărul de apariții ale primei cifre ({prima_cifra}) în numărul dat este: {numar_aparitii}")


if __name__ == "__main__":

   main()

</syntaxhighlight>

Rezolvare ver. 2[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Citim numărul natural și validăm intrarea

while True:

   try:
       numar = int(input("Introduceti un numar natural: "))
       if numar <= 0:
           print("Numarul introdus trebuie sa fie un numar natural pozitiv!")
           continue
       break
   except ValueError:
       print("Nu ati introdus un numar natural pozitiv! Va rugam sa incercati din nou.")
  1. Inițializăm contorul pentru prima cifră a numărului

contor = 0

  1. Determinăm prima cifră a numărului și numărăm câte apariții are în număr

prima_cifra = int(str(numar)[0]) while numar > 0:

   if numar % 10 == prima_cifra:
       contor += 1
   numar //= 10
  1. Afișăm numărul de apariții ale primei cifre a numărului dat

print("Datele sunt introduse corect.") print(f"Numărul de apariții ale primei cifre ({prima_cifra}) în numărul dat este: {contor}")

</syntaxhighlight>