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

Сколько слов длины 8, начинающихся и заканчивающихся гласной буквой, можно составить из букв И, Н, Ф, А, при условии, что буква Н может использоваться в слове не более 3-х раз. Все остальные буквы могут входить в слово любое количество раз. Слова не обязательно должны быть осмысленными словами русского языка.

Решение руками:

Нам нужно создать 8-буквенные слова, начинающиеся и заканчивающиеся гласной буквой.

Первую и последнюю позицию можно занять 2⋅2 = 4  способами.

Найдем количество способ, которым можно расставить 6 букв в центре. Рассмотрим 4 случая: количество букв «Н» 0, 1, 2 и 3.

1) Буква «Н» встречается 0 раз, тогда в центр можно поставить любые из трех букв на каждую позицию:  6 3  = 729  .

2) Буква «Н» встречается 1 раз, тогда в центр можно поставить любые из трех букв на 5 позиций. Также букву «Н» на 6 мест можно разместить шестью разными способами: 35 ⋅6 = 1458  .

3) Буква «Н» встречается 2 раза, тогда в центр можно поставить любые из трех букв на 4 позиции. Также две буквы «Н» на 6 мест можно разместить 15-ю разными способами: 34 ⋅15 = 1215  .

4) Буква «Н» встречается 3 раза, тогда в центр можно поставить любые из трех букв на 3 позиции. Также три буквы «Н» на 6 мест можно разместить 20-ю разными способами: 33 ⋅20 = 540  .

Общее число слов:

4⋅(729+ 1458+ 1215+ 540) = 15768

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

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:
                            for x8 in alf:
                                w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8
                                if w.count(’Н’) <= 3 and w[0] in ’ИА’ and w[-1] in ’ИА’:
                                    ans.add(w)
print(len(ans))

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

from itertools import product

ans = set()
alf = ’ИНФА’

for w in product(alf, repeat=8):
    w = ’’.join(w)
    if w.count(’Н’) <= 3 and w[0] in ’ИА’ and w[-1] in ’ИА’:
        ans.add(w)
print(len(ans))

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