0995 - Numere 6: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerința == Se dau două numere naturale diferite. Afişaţi cel mai mare număr care poate fi scris folosind toate cifrele celor două numere date. == Date de intrare == Fișierul de intrare numere6.in conține pe prima linie cele două numere. == Date de ieșire == Fișierul de ieșire numere6.out 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 == ; numere6.in : 36321 41...
 
No edit summary
Line 23: Line 23:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0995 Numere 6
# 0995 Numere 6
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
 
    for cifra in range(9, -1, -1):
        while frecventa_cifre[cifra]:
            frecventa_cifre[cifra] -= 1
            print(cifra, end="")
 
 
if __name__ == '__main__':
 
    file_in = open("numere6in.txt")
    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:
        print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>

Revision as of 15:58, 22 March 2023

Cerința

Se dau două numere naturale diferite. Afişaţi cel mai mare număr care poate fi scris folosind toate cifrele celor două numere date.

Date de intrare

Fișierul de intrare numere6.in conține pe prima linie cele două numere.

Date de ieșire

Fișierul de ieșire numere6.out 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

numere6.in
36321 4173
numere6.out
Datele introduse corespund restricțiilor impuse.
764333211


Exemplu 2

Intrare
10
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0995 Numere 6

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
   for cifra in range(9, -1, -1):
       while frecventa_cifre[cifra]:
           frecventa_cifre[cifra] -= 1
           print(cifra, end="")


if __name__ == '__main__':

   file_in = open("numere6in.txt")
   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:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>