2826 - Duplicare1
Cerința
Subprogramul duplicare are doi parametri, în această ordine:
- n, prin care primește un număr natural (n∈[1,104]);
- d, prin care furnizează numărul obţinut prin duplicarea fiecărei cifre pare a lui n sau -1 dacă acesta nu are nicio cifră pară.
Scrieți definiția completă a subprogramului în Python.
Exemplu
Dacă n=2380, după apel d=2238800.
Explicație
Funcția duplicare primește ca parametri un număr natural n și un număr d, prin care se furnizează valoarea calculată. Funcția parcurge cifrele numărului n și adaugă în numărul rezultat fie cifra respectivă de două ori (dacă este pară), fie o singură dată (dacă este impară). Dacă nu există nicio cifră pară în numărul n, funcția returnează -1.
Rezolvare
<syntaxhighlight lang="python> def validate_input(n: int, d: int) -> bool:
# Verificăm dacă n este între 1 și 10^4 if n < 1 or n > 10**4: return False # Verificăm dacă d este între -1 și 10^9 if d < -1 or d > 10**9: return False return True
def duplicare(n: int, d: int) -> int:
# Initializăm numărul rezultat cu 0 result = 0 # Parcurgem cifrele numărului n while n > 0: # Extragerea ultimei cifre din n cifra = n % 10 # Dacă cifra este pară, o adăugăm de două ori în numărul rezultat if cifra % 2 == 0: result = result * 100 + cifra * 10 + cifra else: result = result * 10 + cifra # Trecem la următoarea cifră n //= 10 # Dacă nu am adăugat nicio cifră pară, returnăm -1 if result == 0: return -1 else: return result
def main():
# Citim numarul n de la tastatura n = int(input("Introduceti numarul n: "))
# Apelam subprogramul duplicare si afisam rezultatul d = duplicare(n) if d == -1: print("Numarul n nu are cifre pare") else: print(f"Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}")
if __name__ == '__main__':
main()
</syntaxhighlight>