3254 - Prod PI: Diferență între versiuni
De la Universitas MediaWiki
(Am creat de la zero.) |
|||
(Nu s-au afișat 3 versiuni intermediare efectuate de același utilizator) | |||
Linia 1: | Linia 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/3254/prod-pi] | |||
== Cerinţa == | == 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. | 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. | ||
Linia 15: | Linia 16: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | === 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> | <syntaxhighlight lang="python" line> | ||
Linia 33: | Linia 64: | ||
produs_pi = cifra_max_para * cifra_min_impara | 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}.") | print(f"Produsul dintre cea mai mare cifră pară și cea mai mică cifră impară a numărului {numar} este {produs_pi}.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Versiunea curentă din 12 mai 2023 10:13
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}.")