0999 - Numere 7: Difference between revisions
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
Se dau două numere naturale diferite. Afişaţi cel mai mic număr care poate fi scris folosind toate cifrele celor două numere date. | Se dau două numere naturale diferite. Afişaţi cel mai mic număr care poate fi scris folosind toate cifrele celor două numere date. | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare | Fișierul de intrare numere7in.txt conține pe prima linie cele două numere. | ||
== Date de ieșire == | == Date de ieșire == | ||
Fișierul de ieșire | Fișierul de ieșire numere7out. txt va conține pe prima linie numărul cerut. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
:- cele două numere date vor fi mai mici decât 2 000 000 000 | :- cele două numere date vor fi mai mici decât 2 000 000 000 | ||
Revision as of 16:22, 22 March 2023
Cerința
Se dau două numere naturale diferite. Afişaţi cel mai mic număr care poate fi scris folosind toate cifrele celor două numere date.
Date de intrare
Fișierul de intrare numere7in.txt conține pe prima linie cele două numere.
Date de ieșire
Fișierul de ieșire numere7out. txt va conține pe prima linie numărul cerut.
Restricții și precizări
- - cele două numere date vor fi mai mici decât 2 000 000 000
Exemplu 1
- numere7in.txt
- 36321 4173
- numere7out.txt
- Datele introduse corespund restricțiilor impuse.
- 112333467
Exemplu 2
- numere7in.txt
- 2 000 344 678 8 000 000 000
- numere7out.txt
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 0999 Numere 7
def verificare(nr1, nr2):
if nr1 > 2000000 or nr2 > 2000000:
raise ValueError
return True
def numere6(nr_1, nr_2):
frecventa_cifre = []
for i in range(10):
frecventa_cifre.append(0)
while nr_1:
u_cif = int(nr_1 % 10)
frecventa_cifre[u_cif] += 1
nr_1 //= 10
while nr_2:
u_cif = int(nr_2 % 10)
frecventa_cifre[u_cif] += 1
nr_2 //= 10
ok = False
for cifra in range(1, 10):
while frecventa_cifre[cifra]:
frecventa_cifre[cifra] -= 1
file_out.write(str(cifra))
ok = True
if ok:
break
for cifra in range(0, 10):
while frecventa_cifre[cifra]:
frecventa_cifre[cifra] -= 1
file_out.write(str(cifra))
if __name__ == '__main__':
file_in = open("numere7in.txt")
file_out = open("numere7out.txt", "w")
numere = file_in.readline().split()
try:
numar_1 = int(numere[0])
numar_2 = int(numere[1])
verificare(numar_1, numar_2)
numere6(numar_1, numar_2)
except ValueError:
file_out.write("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>