3910 - Aranjamente1

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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[edit | edit source]

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

Exemplul 1[edit | edit source]

Intrare

4 6 2

Ieșire

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

Exemplul 2[edit | edit source]

Intrare

6 8 3

consola

Nu corespunde restricțiilor

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> 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)
  1. Citirea datelor de intrare

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

  1. Apelarea funcției pentru afișarea permutărilor sau mesaj de eroare

afisare_permutari(a, b, n)

</syntaxhighlight>