4206 - CifDiv3Rec

From Bitnami MediaWiki
Revision as of 10:07, 6 April 2023 by Cata (talk | contribs)

Cerinţa

Să se scrie o funcție Python recursivă care să returneze numărul cifrelor divizibile cu 3 ale unui număr natural n transmis ca parametru.

Restricţii şi precizări

  • Numele funcției va fi CifDiv3Rec
  • Funcția va avea un parametru reprezentând numărul dat n
  • 0 ≤ n ≤ 2.000.000.000

Exemplu

CifDiv3Rec(2009376) este 5, cifrele divizibile cu 3 fiind, de la stânga la dreapta, 0, 0, 9, 3, 6.

Explicație

Funcția CifDiv3Rec primește ca parametru un număr întreg pozitiv n și returnează numărul de cifre ale acestuia care sunt divizibile cu 3.

Funcția utilizează o abordare recursivă, în care se calculează cifra unităților a numărului n și se verifică dacă aceasta este divizibilă cu 3. Dacă este, se adaugă 1 la numărul de cifre divizibile cu 3 găsite până acum și se reapelează funcția pentru a verifica cifra următoare. În caz contrar, se reapelează funcția fără a adăuga 1 la numărul de cifre divizibile cu 3 găsite până acum.

Procesul continuă până când toate cifrele numărului n au fost verificate, moment în care se va returna numărul de cifre divizibile cu 3 găsite în total.

Rezolvare

<syntaxhighlight lang="python"> def validate_n(n):

   if isinstance(n, int) and n >= 0 and n <= 2_000_000_000:
       return True
   else:
       return False

def CifDiv3Rec(n):

   if n == 0:
       return 0
   elif n % 10 % 3 == 0:
       return 1 + CifDiv3Rec(n // 10)
   else:
       return CifDiv3Rec(n // 10)

def main():

   n = input("Introduceți un număr întreg pozitiv: ")
   try:
       n = int(n)
       if validate_n(n):
           result = CifDiv3Rec(n)
           if result == 0:
               print("Nu există cifre divizibile cu 3 în numărul introdus.")
           else:
               print(f"Numărul de cifre divizibile cu 3 din numărul introdus este: {result}")
       else:
           print("Numărul introdus nu este valid.")
   except ValueError:
       print("Nu ați introdus un număr întreg.")

</syntaxhighlight>