3909 - Permutari6
De la Universitas MediaWiki
Cerința
Se citesc două numere a
și b
. Să se afișeze, în ordine lexicografică, permutările mulțimii {a, a + 1, ..., b}
.
Date de intrare
Programul citește de la tastatură numerele a b
.
Date de ieșire
Programul va afișa pe ecran, fiecare pe câte o linie, permutările cerute. Elementele fiecărei permutări vor fi separate prin câte un spațiu.
Restricții și precizări
1 ≤ a < b ≤ 1.000.000.000
0 < b - a < 8
Exemplul 1
Intrare
4 6
Ieșire
4 5 6 4 6 5 5 4 6 5 6 4 6 4 5 6 5 4
Exemplul 2
Intrare
5 3
consola
Restricții neîndeplinite.
Rezolvare
def verifica_restrictii(a, b):
if not (1 <= a < b <= 1000000000) or not (0 < b - a < 8):
print("Restricții neîndeplinite.")
return False
return True
def generate_permutations(a, b, current_permutation):
result = []
if len(current_permutation) == b - a + 1:
result.append(current_permutation.copy())
return result
for i in range(a, b + 1):
if i not in current_permutation:
result.extend(generate_permutations(a, b, current_permutation + [i]))
return result
def main():
# Citim numerele a și b de la tastatură
a, b = map(int, input("Introduceți valorile pentru a și b (separate prin spațiu): ").split())
# Verificăm restricțiile folosind funcția dedicată
if not verifica_restrictii(a, b):
return
# Generăm permutările și le afișăm
permutari = generate_permutations(a, b, [])
for permutare in permutari:
print(" ".join(map(str, permutare)))
if __name__ == "__main__":
main()