3922 - back abc1

De la Universitas MediaWiki

Cerința

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

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

Date de ieșire

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

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

Exemplul 1

Intrare

5 3

Ieșire

ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE

Explicație

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

Exemplul 2

Intrare

5 7 

consola

Nu corespunde restricțiilor

Rezolvare

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

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

# Verificarea restricțiilor și generarea cuvintelor
if check_restrictions(n, m):
    generate_words(n, m)