3158 - numere123

From Bitnami MediaWiki

Cerința[edit | edit source]

Se citește un număr natural n având cifrele diferite două câte două. Afișați în ordine crescătoare numerele care se pot obține din cifrele lui n și care au același număr de cifre ca n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numerele cerute, câte unul pe fiecare rând.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1.000.000.000
  • n are toate cifrele distincte

Exemplul 2[edit | edit source]

Intrare

483

Ieșire

348
384
438
483
834
843

Exemplul 2[edit | edit source]

Intrare

443

consola

Numărul trebuie să fie între 1 și 1.000.000.000 și să aibă cifre distincte.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def are_restrictii(n):

   return 1 <= n <= 1000000000 and len(set(str(n))) == len(str(n))

def permuteaza_cifrele(cifre):

   if len(cifre) == 1:
       return [cifre]
   permutari = []
   for i in range(len(cifre)):
       cifre_ramase = cifre[:i] + cifre[i + 1:]
       for p in permuteaza_cifrele(cifre_ramase):
           permutari.append([cifre[i]] + p)
   return permutari

def main():

   n = int(input("Introduceți un număr n cu cifre distincte: "))
   if not are_restrictii(n):
       print("Numărul trebuie să fie între 1 și 1.000.000.000 și să aibă cifre distincte.")
       return
   cifre_str = str(n)
   cifre_lista = [int(cifra) for cifra in cifre_str]
   toate_permutările = permuteaza_cifrele(cifre_lista)
   număr_cifre_n = len(cifre_lista)
   numere_rezultate = []
   for permutare in toate_permutările:
       if permutare[0] != 0:  # Evităm numerele cu zero în frunte
           număr = int(.join(map(str, permutare)))
           if len(str(număr)) == număr_cifre_n:
               numere_rezultate.append(număr)
   numere_rezultate.sort()
   print("Numerele în ordine crescătoare cu aceleași cifre ca și n:")
   for număr in numere_rezultate:
       print(număr)

if __name__ == "__main__":

   main()

</syntaxhighlight>