Как решать задание 8 ЕГЭ по информатике (комбинаторика слов)?
Задание 8 про количество слов из букв с разными условиями (не начинается с гласной, нет двух одинаковых подряд и т.п.) меня вгоняет в ступор. Как считать число таких слов на ЕГЭ? Есть способ через код?
2 ответа
Задание 8 — комбинаторика: сколько слов заданной длины можно составить из набора букв при ограничениях.
Метод вручную — правило произведения. Считаешь, сколько вариантов на каждую позицию, и перемножаешь.
Пример: слова длины 5 из букв {К, О, Т, Ы}, должны начинаться с согласной.
- 1-я позиция: только согласные (К, Т) → 2 варианта,
- позиции 2–5: любые из 4 → 4 каждая.
- Итого: 2 × 4 × 4 × 4 × 4 = 2 × 256 = 512.
Если условие «нет двух одинаковых подряд» — на каждую следующую позицию вариантов на 1 меньше: первая 4, дальше по 3.
Надёжный способ — перебор на Python (буквами мало, длина небольшая):
from itertools import product
bukvy = "КОТЫ"
cnt = 0
for w in product(bukvy, repeat=5):
s = "".join(w)
if s[0] in "КТ": # условие
cnt += 1
print(cnt)
product генерирует все слова, ты фильтруешь по условию и считаешь.
Частая ошибка: неверно прочитать условие («ровно один гласный» ≠ «хотя бы один»), или забыть, что буквы могут повторяться (если не сказано иначе). Перечитай ограничения буквально.
Если задача чисто на правило произведения — считай по позициям, это быстрее кода. Но как только появляются хитрые условия («нет двух гласных подряд», «начинается и заканчивается одинаково»), надёжнее itertools.product с фильтром.
Главное — точно формализовать условие в виде проверки if. Половина ошибок — в неправильно понятом «или/и» и «хотя бы/ровно».