0362 - Sum Cif 1

De la Universitas MediaWiki

Sursă: [1]

Cerinţa

Se citește un număr natural n. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților.

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 "Datele introduse sunt corecte.", apoi programul afișează pe ecran numărul s, reprezentând suma cifrelor aflate pe poziții pare. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".

Restricții și precizări

  • 1 ⩽ n ⩽ 1.000.000.000

Exemplu

Intrare
59712654
Ieșire
Datele introduse sunt corecte.
Suma cifrelor aflate pe pozitii pare este 19.

Explicație

S-au adunat cifrele 5 2 7 5.

Rezolvare

#0362

def verificare_date(n: int) -> bool:
    if n < 1 or n > 1000000000:
        return False
    return True


def suma_cifre_pare(n: int) -> int:
    suma = 0
    pozitie = 1

    while n > 0:
        cifra = n % 10
        if pozitie % 2 == 0:
            suma += cifra
        pozitie += 1
        n //= 10

    return suma


if __name__ == "__main__":
    n = int(input("Introduceti un numar: "))
    if verificare_date(n):
        print("Datele introduse sunt corecte.")
        print(f"Suma cifrelor aflate pe pozitii pare este {suma_cifre_pare(n)}.")
    else:
        print("Datele introduse nu sunt corecte.")

Explicație rezolvare

Prima funcție, verificare_date(n: int) -> bool, primește ca argument un număr întreg n și returnează True dacă numărul este între 1 și 1.000.000.000 și False în caz contrar.

A doua funcție, suma_cifre_pare(n: int) -> int, primește ca argument un număr întreg n și calculează suma cifrelor aflate pe poziții pare în numărul dat. Aceasta se realizează folosind o buclă while care descompune numărul în cifre și adaugă cifrele aflate pe poziții pare la variabila suma.

Funcția principală începe prin citirea unui număr întreg de la tastatură, utilizând funcția input() și transformând rezultatul într-un întreg cu ajutorul funcției int(). Dacă numărul introdus este valid, adică este între 1 și 1.000.000.000, se afișează un mesaj corespunzător și se calculează și afișează suma cifrelor aflate pe poziții pare, utilizând funcția suma_cifre_pare(n). În caz contrar, se afișează un mesaj de eroare.