Задание 8 ЕГЭ по информатике: слова и комбинаторика на Python за 5 строк
· 4 мин чтения · Редакция Skill Unit
Задание 8 — про слова: сколько слов можно составить из заданных букв по условию или каким по счёту окажется слово в упорядоченном списке. Его можно решать формулами, но на экзамене надёжнее программа: она не ошибается в «ровно» и «хотя бы», а формула пригодится как проверка ответа.
Три инструмента из модуля itertools
- product(буквы, repeat=n) — все слова длины n, буквы могут повторяться. Это «каждую позицию заполняем любой буквой».
- permutations(буквы, n) — слова без повторов букв: каждую букву можно взять один раз.
- set(permutations(слово)) — перестановки букв слова, в котором есть одинаковые буквы: set убирает совпадающие варианты.
Все три функции выдают кортежи букв в том порядке, в каком буквы перечислены во входной строке. Если буквы записаны по алфавиту, слова тоже пойдут по алфавиту — это важно для вопросов «какое слово стоит под номером» и «под каким номером слово».
Пример 1. Буква встречается ровно два раза
Из букв К, О, Д, А, Р составляют слова длиной 5 букв, буквы могут повторяться. Сколько слов, в которых буква А встречается ровно два раза?
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. Без повторов и с запретом
Сколько четырёхбуквенных слов можно составить из букв М, И, Р, Т, если каждая буква используется ровно один раз и слово не начинается с И?
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. Номер слова в списке
Все четырёхбуквенные слова из букв А, В, К, О (буквы могут повторяться) записаны в алфавитном порядке и пронумерованы с единицы. Под каким номером стоит слово КОВА?
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. Перестановки с одинаковыми буквами
Сколько различных слов можно получить, переставляя буквы слова БАОБАБ?
from itertools import permutations
print(len(set(permutations('БАОБАБ')))) # 60Ответ — 60. Без set программа насчитала бы 720 перестановок, потому что считает одинаковые буквы разными. Проверка формулой: 6! ÷ (3! × 2! × 1!) = 720 ÷ 12 = 60 (три Б, две А, одна О).
Пример 5. Соседние буквы различны
Сколько шестибуквенных слов из букв А, Б, В, Г, в которых никакие две соседние буквы не совпадают?
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 с мгновенной проверкой. «Быстрый старт» и первый урок бесплатные.
Хотите пройти путь на практике?
Курс «ЕГЭ по информатике»: короткие уроки, практические задания и проверка ответов. Первый урок бесплатно.
Смотреть курс