4211 - ElimZTRec

De la Universitas MediaWiki

Cerința

Scrieți funcția recursivă ElimZTRec care primind ca parametru un număr natural nenul n, returnează numărul obținut prin eliminarea eventualelor cifre de 0 de la sfârșitul lui n.

Restricții și precizări

  • 1 ≤ n ≤ 2.147.000.000
  • Numele funcției este ElimZTRec.
  • Se recomandă utilizarea recursivității în rezolvarea problemei.

Exemplu

ElimZTRec(240) = 24, ElimZTRec(123) = 123 și ElimZTRec(20500) = 205.

Explicație

Funcția ElimZTRec primește ca parametru un număr natural n și elimină zerourile de la finalul acestuia. Dacă ultima cifră a lui n este diferită de zero, funcția returnează n. În caz contrar, se apelează funcția recursiv cu n împărțit la 10.

Funcția de validare validate_n verifică dacă n este un număr natural între 1 și 2.147.000.000 (inclusiv) folosind operatorii de comparație >= și <=.

Funcția main primește un număr natural n de la tastatură, verifică dacă acesta este valid folosind funcția validate_n, elimină zerourile de la finalul lui n folosind funcția ElimZTRec și afișează rezultatul.

Rezolvare

def validate_n(n):
    if isinstance(n, int) and n >= 1 and n <= 2147000000:
        return True
    else:
        return False

def ElimZTRec(n):
    if n % 10 != 0:
        return n
    else:
        return ElimZTRec(n // 10)

def main():
    n = input("Introduceti un numar natural intre 1 si 2147000000: ")
    try:
        n = int(n)
        if validate_n(n):
            result = ElimZTRec(n)
            print(f"Numarul fara zerouri la final este: {result}")
        else:
            print("Numarul introdus nu este valid.")
    except ValueError:
        print("Nu ati introdus un numar natural.")