3922 - back abc1

From Bitnami MediaWiki
Revision as of 21:44, 9 December 2023 by Gabii (talk | contribs) (am adaugat explicatia)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 folosind primele n litere mari din alfabet și care au literele ordonate alfabetic strict crescător.

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]

  • 1 ≤ n ≤ 26, 0 ≤ m ≤ 10
  • m ≤ n

Exemplul 1[edit | edit source]

Intrare

5 3

Ieșire

ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE

Explicație[edit | edit source]

Primele 5 litere mari sunt {A,B,C,D,E} și se formează cuvinte cu 3 litere având literele ordonate alfabetic.

Exemplul 2[edit | edit source]

Intrare

5 7 

consola

Nu corespunde restricțiilor

Rezolvare[edit | edit source]

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

def generate_words(n, m):

   alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   letters = alphabet[:n]
   for combination in combinations(letters, m):
       word = .join(sorted(combination))
       print(word)

def check_restrictions(n, m):

   if 1 <= n <= 26 and 0 <= m <= 10 and m <= n:
       return True
   else:
       print("Nu corespunde restricțiilor")
       return False
  1. Citirea datelor de intrare

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

  1. Verificarea restricțiilor și generarea cuvintelor

if check_restrictions(n, m):

   generate_words(n, m)

</syntaxhighlight>