3923 - back abc2

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 distincte folosind primele n litere mari din alfabet.

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

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

Exemplul 1

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

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

Exemplul 2

Intrare

4 3

consola

Nu corespunde restricțiilor.

Rezolvare

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))

# 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())

# Verificăm restricțiile folosind funcția check_restrictions
if check_restrictions(n, m):
    generate_words(n, m)