3923 - back abc2

From Bitnami MediaWiki

Cerința[edit | edit source]

Se citesc două numere naturale n și m. Afișați în ordine lexicografică toate cuvintele care sunt formate din m litere distincte folosind primele n litere mari din alfabet.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și m, separate prin spații.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran pe linii separate cuvintele cerute. Î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]

  • 0 ≤ n ≤ 26, 0 ≤ m ≤ 5
  • m ≤ n

Exemplul 1[edit | edit source]

Intrare

4 3

Ieșire

ABC
ABD
ACB
ACD
ADB
ADC
BAC
BAD
BCA
BCD
BDA
BDC
CAB
CAD
CBA
CBD
CDA
CDB
DAB
DAC
DBA
DBC
DCA
DCB

Explicație[edit | edit source]

Primele 4 litere mari sunt {A,B,C,D} și se formează cuvinte cu 3 litere distincte.

Exemplul 2[edit | edit source]

Intrare

4 3

consola

Nu corespunde restricțiilor.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> import itertools

def check_restrictions(n, m):

   if 0 <= n <= 26 and 0 <= m <= 5 and m <= n:
       return True
   else:
       print("Nu corespunde restricțiilor.")
       return False

def generate_words(n, m):

   alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   letters = alphabet[:n]
   # Generăm toate permutările posibile de lungime m folosind literele primele n din alfabet
   permutations = itertools.permutations(letters, m)
   # Afisăm cuvintele în ordine lexicografică
   for word in sorted(permutations):
       print(.join(word))
  1. Citim numerele n și m de la tastatură

n, m = map(int, input("Introduceți valorile lui n și m (separate prin spațiu): ").split())

  1. Verificăm restricțiile folosind funcția check_restrictions

if check_restrictions(n, m):

   generate_words(n, m)

</syntaxhighlight>