3254 - Prod PI
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
<syntaxhighlight lang="python" line>
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}.")
</syntaxhighlight>
Rezolvare ver. 2
<syntaxhighlight lang="python" line>
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}.")
</syntaxhighlight>