3254 - Prod PI

De la Universitas MediaWiki

Sursa: [1]

Cerinţa

Se dă un număr natural n cu cel puțin două cifre, care conține atât cifre pare cât și cifre impare. Calculați produsul dintre cea mai mare cifră pară și cea mai mică cifră impară a lui n.

Date de intrare

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

Date de ieşire

Programul va afișa pe ecran produsul cerut.

Restricții și precizări

  • 10 ≤ n ≤ 1.000.000.000

Exemplu

Intrare
57289
Ieșire
40


Rezolvare

Rezolvare ver. 1

 
def calculate_product_of_digits(numar):
    cifra_max_para = 0  # Variabila pentru a stoca cea mai mare cifră pară
    cifra_min_impara = 10  # Variabila pentru a stoca cea mai mică cifră impară (inițializată cu o valoare mai mare decât maximul posibil)

    while numar > 0:  # Cat timp mai avem cifre în număr
        cifra_curenta = numar % 10  # Obținem cifra curentă prin împărțirea numărului la 10 și luând restul
        if cifra_curenta % 2 == 0 and cifra_curenta > cifra_max_para:  # Dacă cifra curentă este pară și mai mare decât cifra maximă pară înregistrată până acum
            cifra_max_para = cifra_curenta  # Actualizăm cifra maximă pară
        elif cifra_curenta % 2 != 0 and cifra_curenta < cifra_min_impara:  # Dacă cifra curentă este impară și mai mică decât cifra minimă impară înregistrată până acum
            cifra_min_impara = cifra_curenta  # Actualizăm cifra minimă impară
        numar //= 10  # Eliminăm cifra curentă din număr prin împărțirea numărului la 10 și obținând partea întreagă

    produs_pi = cifra_max_para * cifra_min_impara  # Calculăm produsul dintre cifra maximă pară și cifra minimă impară

    return produs_pi  # Returnăm rezultatul

if __name__ == '__main__':
    numar = int(input("Introduceți un număr cu cel puțin două cifre și care conține cifre pare și impare: "))

    produs_pi = calculate_product_of_digits(numar)  # Apelăm funcția pentru a calcula produsul

    print("Datele sunt introduse corect.")
    print(f"Produsul dintre cea mai mare cifră pară și cea mai mică cifră impară a numărului este {produs_pi}.")

Rezolvare ver. 2

 
numar = int(input("Introduceți un număr cu cel puțin două cifre și care conține cifre pare și impare: "))

cifra_max_para = 0
cifra_min_impara = 10

while numar > 0:
    cifra_curenta = numar % 10
    if cifra_curenta % 2 == 0 and cifra_curenta > cifra_max_para:
        cifra_max_para = cifra_curenta
    elif cifra_curenta % 2 != 0 and cifra_curenta < cifra_min_impara:
        cifra_min_impara = cifra_curenta
    numar //= 10

produs_pi = cifra_max_para * cifra_min_impara

print("Datele sunt introduse corect.")
print(f"Produsul dintre cea mai mare cifră pară și cea mai mică cifră impară a numărului {numar} este {produs_pi}.")