Найти в Дзене
Алексей Ковальчук

ЕГЭ по информатике, 8 задание: от комбинаторики до Python

В прошлой статье мы обсудили с вами важность решать большинство заданий программным способом, а также понимать смысл написанного кода. В этой статье предлагаю вам разобрать задачу из ЕГЭ по информатике тремя способами. В конце подведем итоги и определим, какой же метод эффективный с точки зрения выполнения заданий на реальном экзамене. Условие: Все шестибуквенные слова, в составе которых могут быть только русские буквы У, Н, И, В, Е, Р, С, Т, записаны в алфавитном порядке и пронумерованы начиная с 1. Определите номер последнего слова в списке, начинающегося с согласной буквы, в котором не менее трёх гласных букв идут подряд. Для ручного способа надо воспользоваться знаниями из комбинаторики. Так как у нас 6 позиций, в каждой из которых может быть 8 букв, число всех возможных комбинаций равняется 6^8 или 262144. По условию задачи нам нужен номер последней строки, которая начинается с согласной буквы и имеет от трех подряд идущих гласных букв. Какие комбинации мы можем рассмотреть? ● ВУУ

В прошлой статье мы обсудили с вами важность решать большинство заданий программным способом, а также понимать смысл написанного кода. В этой статье предлагаю вам разобрать задачу из ЕГЭ по информатике тремя способами. В конце подведем итоги и определим, какой же метод эффективный с точки зрения выполнения заданий на реальном экзамене.

Условие:

Все шестибуквенные слова, в составе которых могут быть только русские буквы У, Н, И, В, Е, Р, С, Т, записаны в алфавитном порядке и пронумерованы начиная с 1. Определите номер последнего слова в списке, начинающегося с согласной буквы, в котором не менее трёх гласных букв идут подряд.

Для ручного способа надо воспользоваться знаниями из комбинаторики. Так как у нас 6 позиций, в каждой из которых может быть 8 букв, число всех возможных комбинаций равняется 6^8 или 262144. По условию задачи нам нужен номер последней строки, которая начинается с согласной буквы и имеет от трех подряд идущих гласных букв. Какие комбинации мы можем рассмотреть?

● ВУУУУУ
● НУУУУУ
● РУУУУУ
● СУУУУУ
● ТУУУУУ

Не исключаю, что есть другие варианты, но остановимся на анализе указанных. Из вышепредставленных строк выберем последнюю, так как она идет последней в алфавитном порядке. Отлично, теперь остается узнать ее номер, здесь тоже не обойдется без вычислений. Попробуем определить закономерность. Количество строк, начинающихся с буквы В, равняется 8^5 или 32768. Соответственно, номер первой строки, начинающейся с буквы Е, равен 8^5 + 1, и последняя строка, начинающаяся на букву Е, равна 2 * 8^5. Последняя строка с впереди идущей буквой И будет равна 3 * 8^5, а для буквы Н равна 4 * 8^5. Заметив закономерность, можно определить номер для искомой строки ТУУУУУ — 7 * 8^5. Умножаем на 7, потому что буква Т идет седьмой по счету в алфавитном порядке из представленных букв. Ответ: 229376

А теперь программное решение, не требующее использования математики, на Python

-2

Принцип данного решения заключается в сборке строки из представленных букв с помощью схемы цикла в цикле.

14 строка: проверяем, чтобы первая буква была согласной

15 строка: проверяем, чтобы как минимум три подряд идущих буквы были гласными. Согласен, что второе условие не до конца полное, так как для большей уверенности можно перебрать все возможные случаи подряд идущих гласных, но для решения данной задачи этого достаточно.

Таким образом, если строка нам подходит под условия, то мы записываем ее в переменную answer. Переменная answer перезапишется более 8000 раз, но на 8640 мы получим последний номер строки, который укажем в ответе. Ответ: 229376

Бонус решение на Python с помощью встроенной библиотеки itertools

-3

Здесь представлено еще более лаконичное решение. Вместо громоздкой ветки циклов в строке под номером 7 мы используем метод product. Данный способ аналогичен циклам for, но не требует лишний раз их прописывать. Остальная идея реализации по поиску необходимой строки осталась прежней. Ответ: 229376.

Итого, мы разобрали три разных решения: одно ручное и два программных.

Для первого способа нам пришлось прибегнуть к аналитическим рассуждениям, комбинаторике и математическим вычислениям. Также задача требовала от нас полной концентрации, чтоб ничего не упустить. Данный подход оказался рабочим, но в ходе решения высок риск допущения вычислительной ошибки или вовсе некорректного рассуждения.

Второй способ хорош тем, что не требует от нас аналитического рассуждения и аналитического решения. Достаточно собрать строку из циклов for и продумать условия отбора подходящей строки. Недостатком такого подхода является громоздкость кода.

Третий способ хорош тем, что нам не надо прописывать длинные циклы for, заменив всё это на метод из встроенной библиотеки, сэкономив время, но всё также требует от нас продумывания условий отбора строк.

Предлагаю написать в комментариях, какой способ вам понравился больше. Со своей стороны скажу, что лучше выбирать тот подход, который требует минимального времени на выполнение из всех возможных, а также не содержит в себе шагов, которые могут привести к неверному ответу.

А чтобы подготовиться к заданиям и структуре ЕГЭ по информатике, для вас я специально подготовил курс «ЕГЭ Информатика 2026 задания 1-27 "Полный курс"». Пройдя данный курс, вы научитесь писать код для решения задач, сформируете фундаментальные знания. Неважно, умеете ли вы программировать или нет.

Для тех, кто интересуется темой образования, приглашаю вас в свой телеграм-канал. Там вы найдете еще больше полезных постов и материалов для подготовки к экзаменам.