Задание 8 ЕГЭ по информатике: слова и комбинаторика на Python за 5 строк

· 4 мин чтения · Редакция Skill Unit

Задание 8 — про слова: сколько слов можно составить из заданных букв по условию или каким по счёту окажется слово в упорядоченном списке. Его можно решать формулами, но на экзамене надёжнее программа: она не ошибается в «ровно» и «хотя бы», а формула пригодится как проверка ответа.

Три инструмента из модуля itertools

  • product(буквы, repeat=n) — все слова длины n, буквы могут повторяться. Это «каждую позицию заполняем любой буквой».
  • permutations(буквы, n) — слова без повторов букв: каждую букву можно взять один раз.
  • set(permutations(слово)) — перестановки букв слова, в котором есть одинаковые буквы: set убирает совпадающие варианты.

Все три функции выдают кортежи букв в том порядке, в каком буквы перечислены во входной строке. Если буквы записаны по алфавиту, слова тоже пойдут по алфавиту — это важно для вопросов «какое слово стоит под номером» и «под каким номером слово».

Пример 1. Буква встречается ровно два раза

Из букв К, О, Д, А, Р составляют слова длиной 5 букв, буквы могут повторяться. Сколько слов, в которых буква А встречается ровно два раза?

Python
from itertools import product

cnt = 0
for w in product('КОДАР', repeat=5):
    if w.count('А') == 2:
        cnt += 1
print(cnt)  # 640

Ответ — 640. Проверка формулой: выбрать два места для А из пяти — C(5, 2) = 10 способов, на остальные три места — любые из четырёх других букв: 4³ = 64. 10 × 64 = 640.

Пример 2. Без повторов и с запретом

Сколько четырёхбуквенных слов можно составить из букв М, И, Р, Т, если каждая буква используется ровно один раз и слово не начинается с И?

Python
from itertools import permutations

cnt = sum(1 for w in permutations('МИРТ', 4) if w[0] != 'И')
print(cnt)  # 18

Ответ — 18. Проверка: всего перестановок 4! = 24, начинающихся с И — 3! = 6, остаётся 24 − 6 = 18.

Пример 3. Номер слова в списке

Все четырёхбуквенные слова из букв А, В, К, О (буквы могут повторяться) записаны в алфавитном порядке и пронумерованы с единицы. Под каким номером стоит слово КОВА?

Python
from itertools import product

words = [''.join(w) for w in product('АВКО', repeat=4)]
print(words.index('КОВА') + 1)  # 181

Ответ — 181. Две частые ошибки: забыть «+ 1» (index считает с нуля) и записать буквы не по алфавиту — тогда порядок слов будет другим и номер получится неверный. Проверка: всего слов 4⁴ = 256, а слово на К должно стоять во второй половине списка — 181 туда попадает.

Пример 4. Перестановки с одинаковыми буквами

Сколько различных слов можно получить, переставляя буквы слова БАОБАБ?

Python
from itertools import permutations

print(len(set(permutations('БАОБАБ'))))  # 60

Ответ — 60. Без set программа насчитала бы 720 перестановок, потому что считает одинаковые буквы разными. Проверка формулой: 6! ÷ (3! × 2! × 1!) = 720 ÷ 12 = 60 (три Б, две А, одна О).

Пример 5. Соседние буквы различны

Сколько шестибуквенных слов из букв А, Б, В, Г, в которых никакие две соседние буквы не совпадают?

Python
from itertools import product

cnt = 0
for w in product('АБВГ', repeat=6):
    if all(w[i] != w[i + 1] for i in range(5)):
        cnt += 1
print(cnt)  # 972

Ответ — 972. Проверка: первая буква — 4 варианта, каждая следующая — 3 (любая, кроме предыдущей): 4 × 3⁵ = 972.

Как не терять баллы

  • Читайте условие по словам: «ровно», «хотя бы», «не более» дают разные ответы. Для «хотя бы одна А» условие — w.count('А') >= 1.
  • Для номера в списке всегда записывайте буквы в нужном порядке и прибавляйте 1 к index.
  • Если в слове есть повторяющиеся буквы и спрашивают о перестановках, оборачивайте в set.
  • Проверяйте ответ формулой хотя бы по порядку величины: ответ не может быть больше, чем всего возможных слов.
  • Не печатайте все слова на экран — для длинных слов это займёт минуты. Считайте счётчиком.

Сколько времени это займёт на экзамене

Если шаблоны с product и permutations отработаны, задание 8 решается за 3–5 минут: две минуты на чтение условия, одна — на программу, остальное — на проверку формулой. Отработать шаблоны и перейти к заданиям посложнее помогает курс «ЕГЭ по информатике»: в каждом уроке — разбор по типам заданий и задачи на Python с мгновенной проверкой. «Быстрый старт» и первый урок бесплатные.

Хотите пройти путь на практике?

Курс «ЕГЭ по информатике»: короткие уроки, практические задания и проверка ответов. Первый урок бесплатно.

Смотреть курс