3910 - Aranjamente1

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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)