3254 - Prod PI

From Bitnami MediaWiki
Revision as of 10:13, 12 May 2023 by Petras.du.ioana (talk | contribs) (→‎Rezolvare ver. 1)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>