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

Николай составляет 7-буквенные коды из букв Н, И, К, О, Л, А, Й. Буква К может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой Л. Все остальные буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Николай?

Пусть буква К не встречается в словах вовсе. Таких слов возможно 6*6*6*6*6*6*6=279936.

Пусть буква К стоит на второй позиции. Количество возможных слов при этом (при условии, что буква Л не стоит рядом) равно: 5*1*5*6*6*6*6=32400. Также буква К может стоять на третьем, четвертом, пятом и шестом месте. Значит, всего слов с буквой К: 32400*5=162000.

Таким образом, всего возможно слов: 162000+279936=441936.

Решение программой (циклы):

ans = set()
alf = ’НИКОЛАЙ’

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    for x6 in alf:
                        for x7 in alf:
                            w = x1 + x2 + x3 + x4 + x5 + x6 + x7
                            if w.count(’К’) <= 1 and w[-1] != ’К’ and w[0] != ’К’:
                                if ’КЛ’ not in w and ’ЛК’ not in w:
                                    ans.add(w)
print(len(ans))

Решение программой (itertools):

from itertools import product

ans = set()
alf = ’НИКОЛАЙ’

for w in product(alf, repeat=7):
    w = ’’.join(w)
    if w.count(’К’) <= 1 and w[-1] != ’К’ and w[0] != ’К’:
        if ’КЛ’ not in w and ’ЛК’ not in w:
            ans.add(w)
print(len(ans))

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