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

Сколько различных семибуквенных кодовых слов можно составить из букв К,О,Т,Е,Л, если в каждом из них буква Т встречается не менее 3 раз?

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

Всего существует −  57 = 78125  вариантов кодовых слов.

1. Найдем количество слов без буквы Т, в таком случае у нас есть набор из четырех букв на семь мест    7 → 4  = 16384  .

2. Найдем количество слов с одной буквой Т:

Т * * * * * *→ на месте * может быть любая буква из набора К,О,Е,Л: → Т 4 4 4 4 4 4→  46 = 4096  варианта для случая, когда буква Т стоит на первом месте. Она может стоять на любом из семи мест, следовательно, 4096⋅7  = 28672 слова с одной буквой Т.

3. Найдем количество слов с двумя буквами Т:

Т Т * * * * * → на месте * может быть любая буква из набора К,О,Е,Л: Т Т 4 4 4 4 4→ 1 ⋅1⋅4⋅4 ⋅4⋅4⋅4 = 1024  вариантов слов, когда буква Т стоит на первой и второй позиции. Теперь нужно найти количество перестановок двух букв Т, это считается по формуле: 7⋅26! = 21  перестановка, где 7 — это сколькими способами мы можем выбрать место для первой буквы Т, 6 — сколькими способами мы можем выбрать место для второй буквы Т(6, так как одно место уже занято), поэтому всего вариантов 7⋅6  , но так как буквы одинаковые, то нужно поделить еще на 2!, чтобы исключить повторение. Тогда общее количество слов: 1024⋅21 = 21504  .

Так как нам нужно найти количество слов с тремя и более буквами Т, то нам достаточно из всех вариантов вычесть слова без буквы Т, слова с одной буквой Т и слова с двумя буквами Т:

78125− 16384− 28672− 21504 = 11565  слов.

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


s = ’КОТЕЛ’
k = 0

for a in s:
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    for f in s:
                        for g in s:
                            w = a+b+c+d+e+f+g
                            if w.count(’Т’) >= 3:
                                k += 1
print(k)

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

from itertools import product

count = set()

for x in product(’КОТЕЛ’,repeat = 7):
    s = ’’.join(x)
    if s.count(’Т’) >= 3:
        count.add(s)
print(len(count))

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