4206 - CifDiv3Rec
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>