2750 - Gen Nr
De la Universitas MediaWiki
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
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)