2826 - Duplicare1

De la Universitas MediaWiki
Versiunea din 6 aprilie 2023 14:24, autor: Cata (discuție | contribuții) (Pagină nouă: ==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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

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()