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}.")