3910 - Aranjamente1

De la Universitas MediaWiki

Cerința

Se citesc trei numere naturale a b n. Să se afișeze, în ordine lexicografică, șirurile cu n elemente distincte din mulțimea {a, a + 1, ..., b}.

Date de intrare

Programul citește de la tastatură numerele a b n.

Date de ieșire

Programul va afișa pe ecran șirurile cerute, fiecare pe câte o linie. Elementele fiecărui șir vor fi separate prin câte un spațiu. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".

Restricții și precizări

  • 1 ≤ a < b ≤ 1.000.000.000
  • 1≤ n ≤ b - a < 8

Exemplul 1

Intrare

4 6 2

Ieșire

4 5 
4 6 
5 4 
5 6 
6 4 
6 5

Exemplul 2

Intrare

6 8 3

consola

Nu corespunde restricțiilor

Rezolvare

from itertools import permutations

def verificare_restrictii(a, b, n):
    if not(1 <= a < b <= 1000000000) or not(1 <= n <= b - a < 8):
        print("Nu corespunde restricțiilor")
        return False
    return True

def afisare_permutari(a, b, n):
    if not verificare_restrictii(a, b, n):
        return
    
    # Generarea tuturor permutărilor distincte de lungime n
    permutari = list(permutations(range(a, b + 1), n))

    # Afișarea permutărilor
    for permutare in permutari:
        print(*permutare)

# Citirea datelor de intrare
a, b, n = map(int, input("Introduceți trei numere naturale separate prin spațiu (a b n): ").split())

# Apelarea funcției pentru afișarea permutărilor sau mesaj de eroare
afisare_permutari(a, b, n)