2750 - Gen Nr

From Bitnami MediaWiki
Revision as of 00:14, 16 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

sursa: [1]

Cerinţa

Se citesc 2 numere naturale, cu cel mult 12 cifre fiecare. Să se afișeze cel mai mic și cel mai mare număr având exact două cifre, format cu o cifră din primul număr și cu o cifră din al doilea.

Date de intrare

Programul citește de la tastatură cele 2 numere separate printr-un spațiu.

Date de ieşire

Programul va afișa pe ecran cel mai mic și cel mai mare număr de exact două cifre format cu o cifră din primul număr și cu o cifră din al doilea, separate printr-un spațiu.

Restricții și precizări

  • cele două numere citite vor fi mai mici decât 1.000.000.000.000

Exemplu

Intrare
293 412
Ieșire
Datele introduse corespund restricțiilor impuse.
12 94

Explicație

Cifrele 1 și 2 sunt cele mai mici cifre din al doilea respectiv primul număr și astfel se formează 12, iar 9 și 4 sunt cele mai mari cifre din primul respectiv al doilea număr și astfel se formează 94

Rezolvare

<syntaxhighlight lang="python" line>

def citeste_numar_valid(mesaj):

   while True:
       try:
           numar = int(input(mesaj))
           if numar < 0 or numar > 999999999999:
               raise ValueError
           return numar
       except ValueError:
           print("Numărul introdus este invalid. Vă rugăm să introduceți un număr natural cu cel mult 12 cifre.")


def gaseste_numere_minim_si_maxim(a, b):

   cifre_a = [int(cifra) for cifra in str(a)]
   cifre_b = [int(cifra) for cifra in str(b)]
   minim = None
   maxim = None
   # Iterăm prin cifrele ambelor numere și formăm numere cu două cifre
   for cifra_a in cifre_a:
       for cifra_b in cifre_b:
           if cifra_a != cifra_b:
               numar1 = cifra_a * 10 + cifra_b
               numar2 = cifra_b * 10 + cifra_a
               # Verificăm dacă numerele formate sunt cu două cifre
               if numar1 >= 10:
                   # Actualizăm minimul și maximul
                   if minim is None or numar1 < minim:
                       minim = numar1
                   if maxim is None or numar1 > maxim:
                       maxim = numar1
               if numar2 >= 10:
                   if minim is None or numar2 < minim:
                       minim = numar2
                   if maxim is None or numar2 > maxim:
                       maxim = numar2
   return minim, maxim


if __name__ == "__main__":

   a = citeste_numar_valid("Introduceți primul număr: ")
   b = citeste_numar_valid("Introduceți al doilea număr: ")
   minim_numar, maxim_numar = gaseste_numere_minim_si_maxim(a, b)
   if minim_numar is None or maxim_numar is None:
       print("Nu există cifre în comun între cele două numere sau nu există numere cu două cifre.")
   else:
       print("Cel mai mic număr cu două cifre distincte format din cifrele celor două numere este:", minim_numar)
       print("Cel mai mare număr cu două cifre distincte format din cifrele celor două numere este:", maxim_numar)

</syntaxhighlight>