2826 - Duplicare1
De la Universitas MediaWiki
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.
Date de intrare
- n: un număr natural între 1 și 10^4 inclusiv.
Date de ieșire
- d: un număr întreg reprezentând rezultatul duplicării cifrelor pare din n. Dacă n nu are cifre pare, d va fi -1.
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
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()