Найти в Дзене

🧩 Задание 8 ЕГЭ: когда перебор становится искусством

В этой статье мы разберём все типы задач №8, шаг за шагом.
Вы не только поймёте, как решать, но и почему именно так, а не иначе. Задание 8 проверяет умение: Есть два больших типа: Эти типы требуют разных инструментов в Python. Результат: Ключевое: символы могут повторяться, порядок важен, длина фиксирована.
Используется, когда в условии сказано:«буквы могут встречаться несколько раз»,
«цифры могут повторяться»,
«код состоит из 5 символов из набора...».
Результат: Ключевое: каждая буква используется ровно один раз, длина = длине исходного слова.
Используется, когда в условии например: «составить слова из букв слова ВОРОТА»,
«переставить буквы»,
«код без повторяющихся символов». ⚠️ Ловушка: в слове ВОРОТА есть повторяющиеся буквы (O дважды).
Поэтому нужно использовать set(permutations(...)), чтобы убрать дубликаты. Функции product и permutations возвращают кортежи: Чтобы превратить это в строку 'ABC', нужно объединить символы: Без join() вы не сможете: проверить первую/последнюю букву
Оглавление

В этой статье мы разберём все типы задач №8, шаг за шагом.
Вы не только поймёте,
как решать, но и почему именно так, а не иначе.

📚 Часть 1: Теоретическая основа

🔹 Что такое задание 8?

Задание 8 проверяет умение:

  • генерировать все возможные комбинации символов или цифр,
  • фильтровать их по заданным условиям,
  • правильно интерпретировать результат (слово, число, код).

Есть два больших типа:

  1. Комбинации с повторениями — когда символы могут использоваться многократно (например, «слова из 5 букв, где буквы могут повторяться»).
  2. Перестановки без повторений — когда символы используются ровно один раз (например, «перестановки букв слова ВОРОТА»).

Эти типы требуют разных инструментов в Python.

🔹 itertools.product

🔹itertools.permutations

✅ itertools.product — для комбинаций с повторениями

-2

Результат:

-3
Ключевое: символы могут повторяться, порядок важен, длина фиксирована.
Используется, когда в условии сказано:«буквы могут встречаться несколько раз»,
«цифры могут повторяться»,
«код состоит из 5 символов из набора...».

✅ itertools.permutations — для перестановок без повторений

-4

Результат:

-5
Ключевое: каждая буква используется ровно один раз, длина = длине исходного слова.
Используется, когда в условии например: «составить слова из букв слова ВОРОТА»,
«переставить буквы»,
«код без повторяющихся символов».

⚠️ Ловушка: в слове ВОРОТА есть повторяющиеся буквы (O дважды).
Поэтому нужно использовать set(permutations(...)), чтобы убрать дубликаты.

🔹 Почему join() — обязательный элемент?

Функции product и permutations возвращают кортежи:

-6

Чтобы превратить это в строку 'ABC', нужно объединить символы:

-7
Без join() вы не сможете: проверить первую/последнюю букву (s[0], s[-1]),
искать подстроки, проверять наличие символов.

🔹 Зачем in и not in?

Эти операторы позволяют проверять условия:

  • 'K' in s — в слове есть буква K,
  • '0' not in s — в числе нет нуля,
  • 'OA' not in s — сочетание OA не встречается.

Они работают напрямую со строками, поэтому после join() — идеальны.

🔹 Как работают all() и any()?

Эти функции применяются к спискам логических значений.

any(условия) — хотя бы одно условие истинно.

-8

Используется, когда нужно проверить:

«Есть ли хотя бы одно запрещённое сочетание?»

all(условия) — все условия истинны.

-9

Используется, когда нужно проверить:

«Все пары соседних символов удовлетворяют правилу?»
💡 В задачах на запрет сочетаний ('OA' not in s) часто используется all() с генератором:
-10

🔹 Почему нельзя начинать число с нуля?

Число не может начинаться с нуля.
0123 — это не четырёхзначное число, а трёхзначное 123.

Поэтому в задачах на числа всегда добавляется условие:

-11
⚠️ В задачах на слова или коды — ноль в начале разрешён, если он входит в алфавит.

🔹 Ловушка: «не все буквы из условия используются в списке»

В задачах на списки (например, «все 5-буквенные слова записаны в алфавитном порядке») часто даётся пример начала списка:

-12

Из этого нельзя автоматически заключить, что алфавит — только B, E, K.
Нужно
читать условие внимательно: в задаче может быть написано

«Слова составлены из букв B, E, K, H, O».

А в списке просто ранние слова — они начинаются с B, потому что B — первая буква алфавита.

❗ Это классическая ловушка: мы считаем, что алфавит = B, E, K, и получаем неверный ответ.

📌 Часть 2: Разбор всех прототипов

✅ Задача 1

Игорь составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Игорь использует трёхбуквенные слова, в которых могут быть только буквы Ш, К, О, Л, А, причём буква К появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем. Сколько различных кодовых слов может использовать Игорь?

Решение:

-13
Почему product?
Потому что буквы
могут повторяться (кроме условия на К).
Длина фиксирована — 3.
Алфавит дан явно — 'ШКОЛА'.

Ответ: 48

✅ Задача 2

Иннокентий составляет семибуквенные слова из букв Е, И, Й, К, Н, О, Т. Каждая из допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.  Сколько слов может составить Иннокентий, если известно, что в каждом из них есть комбинация КОТ?

-14

Важно: 'КОТ' in s ищет именно эту последовательность подряд.
Это эквивалентно ручному поиску по позициям, но короче.

Ответ: 11984

✅ Задача 3

Сколько слов длины 4, начинающихся с согласной буквы и заканчивающихся гласной буквой, можно составить из букв М, Е, Т, Р, О? Каждая буква может входить в слово несколько раз. Слова не обязательно должны быть осмысленными словами русского языка.

-15
Почему s[0] in 'МТР'?
Это короткая запись условия «первая буква — одна из согласных».
Аналогично для последней.

Ответ: 150

✅ Задача 4

Определите количество шестизначных чисел в пятеричной системе счисления, которые не оканчиваются цифрами 3 и 4 и не начинаются с цифры 1.

-16
Ключевые моменты:s[0] == '0' — отсеиваем числа с незначащими нулями. Такие запрещены,
s[0] == '1' — запрет из условия,
s[-1] in '34' — запрет на последние цифры.

Ответ: 5625

✅ Задача 5

Ярослав составляет коды из букв, входящих в слово ЯРОСЛАВ. Код должен состоять из 5 букв, буквы в коде не должны повторяться, согласных в коде должно быть больше, чем гласных, две гласные буквы нельзя ставить рядом.

Сколько кодов может составить Ярослав?

-17
Почему set(permutations(...))?
Потому что в «АРОСЛАВ» две буквы «А» — без set будут дубликаты.
Почему all?
Проверяем ВСЕ запрещённые пары. Если
хотя бы одна запрещённая пара есть — слово отбрасывается.

Ответ: 1224

-18

Запись на занятия здесь: https://t.me/nka39

✅ Задача 6

Определите количество шестизначных чисел, записанных в шестеричной системе счисления, в записи которых ровно одна цифра 2, при этом никакая нечётная цифра не стоит рядом с цифрой 2.

-19
Проверяем четыре условия: s[0] != '0' — число не начинается с нуля (иначе — не шестизначное);
s.count('2') == 1 — цифра '2' встречается
ровно один раз;
all(i + '2' not in s for i in s1) —
ни одна нечётная цифра не стоит слева от 2, т.е. подстроки '12', '32', '52' отсутствуют;
all('2' + i not in s for i in s1) —
ни одна нечётная цифра не стоит справа от 2, т.е. подстроки '21', '23', '25' отсутствуют.
⚠️ Важно: all(...) возвращает True, только если все элементы генератора дают True.
Здесь i in s1 перебирает '1', '3', '5', и для каждого проверяется, что запрещённая пара отсутствует в s.

Ответ: 3700

✅ Задача 7

Артур составляет 6-буквенные коды перестановкой букв слова ВОРОТА. При этом нельзя ставить рядом две гласные. Сколько различных кодов может составить Артур?

-20

Ответ: 72

✅ Задача 8

Сколько существует шестнадцатеричных трёхзначных чисел, в которых все цифры различны и никакие две чётные или две нечётные цифры не стоят рядом?

-21

Трёхзначные числа в шестнадцатеричной системе:

  • не начинаются с '0',
  • нет двух чётных или двух нечётных цифр подряд.
    Ответ:
    840

✅ Задача 9

Все пятибуквенные слова, составленные из букв В, Е, Н, О, К, записаны в алфавитном порядке и пронумерованы, начиная с 1. Начало списка выглядит так:

-22

Под каким номером в списке идёт последнее слово, в котором буквы Н и К встречаются ровно по два раза?

-23

алфавит = 'B', 'E', 'K', 'H', 'O', и алфавитный порядок — именно такой:
B < E < K < H < O

Что делает этот код:

  • Перебирает все 5-буквенные слова в алфавитном порядке (product генерирует в лексикографическом порядке, а 'BEKHO' задаёт нужный порядок).
  • Считает номер (num) каждого слова.
  • Когда находит слово с ровно двумя 'H' и двумя 'K', сохраняет в массив его номер.

В конце выводит max(d) — максимальный номер, т.е. номер последнего подходящего слова.

Ответ: 2963

✅ Задача 10

Все пятибуквенные слова, составленные из букв К, О, М, П, Ь, Ю, Т, Е, Р, записаны в алфавитном порядке и пронумерованы.
Вот начало списка:

-24

Под каким номером в списке стоит последнее слово с нечётным номером, которое не начинается с буквы Ь и содержит ровно две буквы К?

-25

Буква Ю — реальная часть алфавита, и её наличие влияет на нумерацию слов в лексикографическом порядке.

Ответ: 58979

✅ Задача 10

Все шестибуквенные слова, в составе которых могут быть только русские буквы М, А, Р, К, С, Л записаны в алфавитном порядке и пронумерованы начиная с 1.

Ниже приведено начало списка.

-26

Под каким последним номером идёт слово, в котором буквы К не стоят рядом с буквой С и одна буква повторяется трижды, а остальные не повторяются?

-27

🔸 Важные замечания

  1. product — когда символы могут повторяться.
  2. permutations — когда символы используются один раз.
  3. Если в исходном слове есть повторяющиеся буквы — используйте set(permutations(...)).
  4. Для чисел всегда проверяйте: s[0] != '0'.
  5. В задачах на списки алфавит может быть шире, чем в примере — читайте условие внимательно!
  6. in и not in работают когда надо сравнить один символ сразу со многими.
  7. all() и any() — для проверки множественных условий.

💬 Заключение

Все задачи №8 решаются перебором с фильтрацией.
Главное — выбрать правильный инструмент (product или permutations) и
точно следовать условию.

Пишите в комментариях к статье, разборы на какие задачи Вы бы хотели увидеть.

Подпишитесь на канал и научитесь решать все задания ЕГЭ по информатике!

Удачи на экзамене!

Записаться ко мне на занятия можно тут https://t.me/nka39