3159 - numere124

De la Universitas MediaWiki

Cerința

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

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

Date de ieșire

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

  • 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

Intrare

2576 2

Ieșire

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

Exemplul 2

Intrare

2576 2

consola

"Nu corespunde restricțiilor"

Rezolvare

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)

# Citeste input-ul de la tastatură
input_data = input("Introduceti n si c separate prin spatiu: ")
n, c = map(int, input_data.split())

# Apelul funcției
generare_numere(n, c)