3923 - back abc2
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
<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))
- 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)
</syntaxhighlight>