4211 - ElimZTRec
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.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte.", apoi pe un rând nou un mesaj dat în funcție de valoarea returnată de funcția ElimZTRec, reprezentând numărul cerut. În cazul în care numărul introdus depășește limitele date, se va afișa "Numarul introdus nu este valid.", iar dacă numărul introdus nu este întreg, se va afișa "Nu ati introdus un numar intreg."
Exemplu 1
- Intrare
- Introduceti un numar natural intre 1 si 2147000000: 240
- Ieșire
- Datele introduse sunt valide.
- Numarul fara zerouri la final este: 24
Exemplu 2
- Intrare
- Introduceti un numar natural intre 1 si 2147000000: 123
- Ieșire
- Datele introduse sunt valide.
- Numarul fara zerouri la final este: 123
Rezolvare
<syntaxhighlight lang="python"> 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)
if __name__ == "__main__":
n = input("Introduceti un numar natural intre 1 si 2147000000: ") try: n = int(n) if validate_n(n): result = ElimZTRec(n) print("Datele introduse sunt valide.") 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.")
</syntaxhighlight>
Explicație
Funcția validate_n(n) verifică dacă valoarea argumentului n este un număr întreg pozitiv între 1 și 2147000000 (valoarea maximă pe 32 de biți). Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.
Funcția ElimZTRec(n) primește un număr natural n și elimină zerourile de la sfârșitul acestuia recursiv, până când ultima cifră a numărului este diferită de 0. În cazul în care ultima cifră a numărului este diferită de 0, funcția returnează valoarea inițială a numărului, altfel apelează funcția recursiv cu n împărțit la 10.
În secțiunea if __name__ == "__main__":, programul primește de la utilizator un număr natural, îl validează folosind funcția validate_n(n), apelează funcția ElimZTRec(n) pentru a elimina zerourile de la sfârșitul numărului și afișează rezultatul. Dacă numărul introdus de utilizator nu este valid, se afișează un mesaj corespunzător.