3254 - Prod PI: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
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>

Revision as of 10:13, 12 May 2023

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>