Задача к ЕГЭ по информатике на тему «подсчет количества слов/чисел» №3

Дамир составляет 5-буквенные коды из букв О, Л, Ь, Г, А. Слова должны соответствовать следующим условиям: Каждую букву нужно использовать ровно 1 раз; Ь нельзя ставить первым и нельзя ставить после гласной. Сколько различных кодов может составить Дамир?

Решение через циклы

a = ’ОЛЬГА’

count = set()

for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    s = x1+x2+x3+x4+x5
                    if s[0] != ’Ь’ and len(set(s)) == len(s) and ’ОЬ’ not in s and ’АЬ’ not in s:
                        count.add(s)
print(len(count))

Решение через itertools

from itertools import permutations

ans = []
gl = ’ОА’

for i in permutations(’ОЛЬГА’, 5):
    s = ’’.join(i)
    if s[0] != ’Ь’ and s[s.index(’Ь’) - 1] not in gl:
        ans.append(s)

print(len(ans))

Ответ: 48
Оцените статью
Я решу все!