4212 - IncCifPare

De la Universitas MediaWiki

Sursa: [1]

Cerința

Să se scrie un program care citește un număr natural n și care crește cu 1 valoarea cifrelor pare. De exemplu, dacă n=1234 atunci se va obține numărul 1335, iar dacă n=135 atunci numărul rămâne neschimbat.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele introduse sunt corecte, pe ecran se va afișa mesajul: "Datele sunt introduse corect.", apoi programul va afișa numărul obținut prin creșterea cu 1 a cifrelor pare ale lui n. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."'.

Restricții și precizări

  • 0 ≤ n ≤ 1.000.000.000

Exemplu

Intrare
1234
Ieșire
"Datele sunt introduse corect."
1335

Rezolvare

#4212

def verificare_numar(n: int) -> bool:
    return 0 <= n <= 1000000000

def creste_cifre_pare(n: int) -> int:
    r = 0
    p = 1
    while n > 0:
        cifra = n % 10
        if cifra % 2 == 0:
            cifra += 1
        r += cifra * p
        p = p * 10
        n = n // 10
    return r

if __name__ == '__main__':
    n = int(input("Introduceti un numar natural: "))
    if not verificare_numar(n):
        print("Datele nu corespund restricțiilor impuse.")
        exit()
    print("Datele sunt introduse corect.")
    rezultat = creste_cifre_pare(n)
    print(f"Numarul obtinut este: {rezultat}")

Explicație rezolvare

Funcția verificare_numar primește un parametru n și returnează True dacă n este un număr întreg între 0 și 1000000000 (conform restricțiilor din cerință), altfel returnează False.

Funcția creste_cifre_pare primește un număr întreg n și folosește o buclă while pentru a parcurge cifrele lui de la dreapta la stânga. Pentru fiecare cifră, se verifică dacă este pară și, dacă este, se crește cu 1. Apoi, cifra este adunată la rezultatul r, care se actualizează în fiecare iterație prin înmulțirea cu p, care reprezintă puterea de 10 corespunzătoare poziției curente a cifrei în numărul inițial. La final, funcția returnează r.

În funcția main, utilizatorul este întâmpinat cu un mesaj de introducere și se citește numărul n de la tastatură folosind input. Apoi, se verifică dacă n este valid folosind verificare_numar. Dacă nu este, se afișează un mesaj de eroare și programul se încheie folosind exit(). Dacă este valid, se calculează numărul obținut prin apelul funcției creste_cifre_pare și se afișează pe ecran folosind print.