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)