3909 - Permutari6
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numerele a b
.
Date de ieșire[edit | edit source]
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[edit | edit source]
1 ≤ a < b ≤ 1.000.000.000
0 < b - a < 8
Exemplul 1[edit | edit source]
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[edit | edit source]
Intrare
5 3
consola
Restricții neîndeplinite.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> 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()
</syntaxhighlight>