3159 - numere124

From Bitnami MediaWiki

Cerința[edit | edit source]

Se citesc un număr natural n având cifrele diferite două câte două și o cifră c. Afișați în ordine crescătoare numerele formate din c cifre distincte care se pot obține din cifrele lui n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și c.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numerele cerute, câte unul pe fiecare rând. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".

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

  • 1 ≤ n ≤ 1.000.000.000, 1 < c < 9
  • n are cifrele distincte
  • c este mai mic decât numărul de cifre ale lui n

Exemplu 1[edit | edit source]

Intrare

2576 2

Ieșire

25
26
27
52
56
57
62
65
67
72
75
76

Exemplul 2[edit | edit source]

Intrare

2576 2

consola

"Nu corespunde restricțiilor"

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> from itertools import permutations

def verifica_restrictii(n, c):

   # Verifică restricțiile
   if not (1 <= n <= 1000000000 and 1 < c < 9):
       return False
   # Verifică dacă n are cifre distincte
   cifre = set(str(n))
   if len(cifre) != len(str(n)):
       return False
   # Verifică dacă c este mai mic decât numărul de cifre ale lui n
   if c >= len(str(n)):
       return False
   return True

def generare_numere(n, c):

   # Verifică restricțiile
   if not verifica_restrictii(n, c):
       print("Nu corespunde restricțiilor")
       return
   # Restul codului pentru generarea și afișarea numerelor
   cifre = list(str(n))
   permutari = list(permutations(cifre, c))
   for perm in sorted(permutari):
       numar = int("".join(perm))
       print(numar)
  1. Citeste input-ul de la tastatură

input_data = input("Introduceti n si c separate prin spatiu: ") n, c = map(int, input_data.split())

  1. Apelul funcției

generare_numere(n, c)

</syntaxhighlight>