3254 - Prod PI: Difference between revisions
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 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. | ||
Line 15: | Line 16: | ||
== Rezolvare == | == 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> | <syntaxhighlight lang="python" line> | ||
Line 34: | Line 66: | ||
print("Datele sunt introduse corect.") | 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> |
Latest revision as of 10:13, 12 May 2023
Sursa: [1]
Cerinţa[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran produsul cerut.
Restricții și precizări[edit | edit source]
- 10 ≤ n ≤ 1.000.000.000
Exemplu[edit | edit source]
- Intrare
- 57289
- Ieșire
- 40
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<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[edit | edit source]
<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>