Все статьи по ЕГЭ
2 сент. 2025 г. - 84 мин. чтения
ЕГЭ Задание 8

ЕГЭ Задание 8

Комбинаторика. Перебор слов и системы счисления

@ashtana

Штана Альберт Игоревич

Типы заданий № 8

В этой статье будет разобрано задание 8.

Рассмотрим типовые задачи из восьмого задания ЕГЭ по информатике.

Данное задание относится к базовому уровню сложности.

Время выполнения задания ≈ 4 минуты.

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

Примеры решения задач

К некоторым примерам приведено несколько способов решения задачи. Основных способов решения два: Python или применяя формулы комбинаторики и переводы чисел из одной системы счисления в другую.

Задача 1

Все 5-буквенные слова, составленные из букв А, О, У, записаны в алфавитном порядке. Вот начало списка:

  1. ААААА
  2. ААААО
  3. ААААУ
  4. АААОА ...

Запишите слово, которое стоит на 240-м месте от начала списка.

Решение:

Поскольку слова начинаются с букв А иих список начинается с ААААА, а далее идут слова ААААО, ААААУ, АААОА и т.д., буквы А, О, У сопоставляются цифрам: А – 0, О – 1, У – 2. В результате исходная задача сводится к следующей:

Все 5-значные числа, составленные из цифр 0, 1, 2, записаны в порядке возрастания. Вот начало списка:

  1. 00000
  2. 00001
  3. 00002
  4. 00010 ...

Какое число стоит на 240-м месте в списке?

Чтобы определить число, стоящее в списке на 240-й позиции, нужно учесть "рассогласование" между значениями чисел и их порядковыми номерами в списке:

  • последовательность чисел начинается со значения 00000 = 0.
  • нумерация чисел в списке начинается с единицы.

Тогда для определения числа, стоящего на 240-й позиции, составляется следующее соответствие:

Порядковый номерЗначение числа
10
240(240 - 1)

Очевидно, что на 240-м месте в списке стоит десятичное число 239 (так как значение числа на 1 меньше, чем порядковый номер).

Пятиразрядная запись этого числа в троичной системе счисления определяется:

В результате, на 240-м месте в списке находится пятиразрядное троичное число 22212. Преобразуя это число к записи слова, кодируемого буквами А, О, У по правилу соответствия: A – 0, О – 1, У – 2, получается слово: УУУОУ.

Ответ: УУУОУ

Задача 2

Все 5-буквенные слова составленные из букв К, О, Т. Вот начало списка:

  1. ТТТОК
  2. ТТТКТ
  3. ТТТКО
  4. ТТТКК
  5. ТТОТТ ...

На каком месте находится слово КОТОК?

Решение:

В приведённом списке после слова ТТТОК идёт слово ТТТКТ, потом ТТТКО, затем — ТТТКК и ТТОТТ. Тогда, сопоставив буквы К, О, Т цифрам: Т — 0, О — 1, К — 2, условие задачи переписывается в виде:

Все 5-значные числа составлены из цифр 0,1,2. Вот начало списка:

  1. 00012
  2. 00020
  3. 00021
  4. 00022
  5. 00100 ...

На каком месте списка находится число 21012?

Число 21012 записано вв троичной системе счисления. После преобразования его в десятичное:

Чтобы определить номер позиции в списке для числа 192, учитывается "рассогласование" между значениями чисел и их порядковыми номерами в списке:

  • последовательность чисел начинается с 12(в трочной системе) = 5;
  • нумерация чисел в списке начинается с единицы.

Для определения номера позиции числа 192 составляется соответствие:

Порядковый номерЗначение числа
1 (= 5 - 4)5
188 (= 192 - 4)192

Очевидно, что десятичное число 192 будет стоять в списке на 188-м месте (так как значение числа на 4 больше, чем его порядковый номер).

Ответ: 188

Задача 3

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

  1. ООО
  2. ООК
  3. ООД
  4. ООР
  5. ООЕ
  6. ОКО ...

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

Решение:
  1. Очевидно, что приведённый в условии список слов идентичен трёхзначным числам в пятеричной системе, где буквы соответствуют цифрам: О — 0, К — 1, Д — 2, Р — 3, Е — 4. Тогда нужно искать первое трёхзначное число, начинающееся с цифры 2, т.е. число 200(в пятеричной системе) или, в десятичном представлении 50.
  2. Заметим, что в списке число 000 идёт под номером 1, — значит, номер каждого числа на 1 больше самого этого числа. Тогда искомое число(а значит, и слово) в списке стоит под номером 51.

Ответ: 51

Задача 4

Сколько существует различных символьных последовательностей длины 5 в трёхбуквенном алфавите {К,О,Т}, которые содержат ровно две буквы О?

Решение:
Способ 1

Задача подобна предыдущим, и принцип её решения во много аналогичен — "перевод" букв в цифры соответствующей системы счисления и далее работа с полученными числами.

  1. Поскольку никаких слов изначально не задано, мы можем сами "назначить" цифры, соответствующие каждой букве. А поскольку букв в алфавите три, мы имеем дело с троичной системой счисления и выберем следующие соответствия букв и цифр: О — 0, К — 1, Т — 2 (0 для буквы О, т.к. нужно искать слова, содержащие ровно две буквы О, с нулями это окажется проще).
  2. Итак, нужно определить количество пятиразрядных троичных чисел(причём незначащие нули слева важны!), содержаших ровно два нуля.
  3. Первый ноль может быть в одной из 5 позиций — получаем 5 вариантов, в каждом из которых второй ноль может распологаться так:
    • когда первый ноль находится в позиции "1", а второй может находиться в четырёх оставшихся позициях.
    • когда первый ноль находится в позиции "2", а второй в трёх оставшихся "3", "4" и "5" (ведь ситуацию когда нули располагаются в позициях "1" и "2", мы уже рассмотрели выше).
    • когда первый ноль находится в позиции "3", а второй в двух оставшихся "4" и "5" (аналогично в скобочках выше).
    • когда первый ноль находится в позиции "4", а второй только в позиции "5".

Итого получаем 4 + 3 + 2 + 1 = 10 вариантов размещения в пятиразрядном числе двух нулей.

Возможны и иные рассуждения приводящие к такому же результату! Например: условно обозначим наши нули разными цветами. Первый — синим, второй — красным. Тогда синий ноль можно разместить в пяти разрядах — получаем 5 вариантов. И в каждом из этих пяти вариантов красный ноль можно разместить в любом из оставшихся четырёх позиций. Значит, всего получаем 5 * 4 = 20 вариантов размещения. Но теперь вспомним что на самом деле оба нуля(синий и красный) — равноправны. А значит, пары "синий – красный" и "красный – синий" — это одни и теже пары. Следовательно, каждая пара получилось что была посчитана дважды и всего вариантов размещения двух нулей у нас всё-таки 20 / 2 = 10.

  1. В каждом из этих 10 вариантов остаётся три цифры, которые могут быть равны 1 или 2.
  2. Сколько может быть таких неповторяющихся комбинаций? Очевидно, столько, сколько может быть различных трёхразрядных чисел в системе счисления, состоящей их двух цифр(т.е. двоичной). Значит подвариантов, для каждого из 10 ранее найденных вариантов получается:
  3. Тогда общее число троичных чисел, в которых из пяти цифр ровно две — нулевые, будет равно 8 * 10 = 80.
Способ 2

Другой способ решения данной задачи — это использование формул комбинаторики.

  1. В последовательности из 5 букв должно быть две буквы О и соответственно три другие буквы. Сначала ищём количество перестановок с повторениями (формула в разделе теория выше) из двух букв О и трёх произвольных букв. В данной задаче количество перестановок с повторениями будет равно:
  2. В остальных трёх позициях слова (кроме тех, что заняты двумя буквами О) может стоять любая из двух оставшихся букв — К или Т. Следовательно, нужно вычислить количество всех возможных трёхбуквенных слов, состоящих из двух возможных букв. Такое трёхбуквенное слово можно рассматривать как трёхразрядное число, которое представлено в системе счисления с основанием 2(так как в алфавите этой "системы счисления" всего две "цифры" — К и Т). Тогда количество таких слов совпадает с количеством возможных различных трёхразрядных двоичных чисел. А оно равно:

Количество различных n-разрядных числе в системе счисления с основанием m оперделяется по формуле: (основание системы счисления, возведённое в степень, равную числу разрядов).

  1. Тогда общее число троичных чисел, в которых из пяти цифр ровно две — нулевые, будет равно 8 * 10 = 80.

Ответ: 80

Задача 5

Составляется таблица кодовых слов для передачи сообщений, где каждому сообщению должно быть сопоставлено отдельное кодовое слово из 4 букв. В этих кодовых словах можно использовать только пять букв: "Л", "О", "Г", "И", "К", при этом буква "Л" может быть использована ровно один раз, а все остальные буквы могут встречаться в кодовом слове сколько угодно раз (или отсутствовать). Сколько различных кодовых слов можно получить по этой таблице?

Решение:
  1. Выпишем все возможные варианты четырёхбуквенных кодовых слов с ровно одной буквой "Л": Л***, *Л**, **Л*, ***Л (где * обозначает любые другие буквы). Получили 4 возможных варианта.
  2. Вариантов распределения четырёх оставшихся в нашем алфавите букв в трёх позициях кодовых слов столько же, сколько возможно трёхзначных чисел в системе счисления с основанием 4, т.е. 4(в 3 степени) = 64.
  3. Тогда всего возможных кодовых слов: 4 * 64 = 256. Это решение можно записать более наглядно в виде таблицы:
ВариантПо позициямВсего
Л***1 ⋅ 4 ⋅ 4 ⋅ 464
*Л**1 ⋅ 4 ⋅ 4 ⋅ 464
**Л*1 ⋅ 4 ⋅ 4 ⋅ 464
***Л1 ⋅ 4 ⋅ 4 ⋅ 464
ИТОГО256

Ответ: 256

Задача 6

Составляется таблица кодовых слов из 5 букв, в которых можно использовать только буквы: "К", "А", "Т", "Е", "Р". При этом буква "Р" должна быть использована хотя бы 2 раза, а остальные буквы могут встречаться сколько угодно раз или отсутствовать. Сколько можно получить различных кодовых слов?

Решение:

В отличие от предыдущей задачи, буква "Р" должна встречаться не ровно какое-то количество раз, а хотя бы два раза. Это означает, что в каждом получаемом слове мы должны обеспечить две буквы "Р" обязательные, а в остальных позициях слов могут быть любые буквы, в том числе и та же буква "Р".

Вычислять количество вариантов в каждой позиции, обозначенной звёздочкой, в данном случае чуть сложнее, чем в предыдущей задаче. Если, например, мы рассматриваем два варианта — "РР*" и "*РР", то нетрудно увидеть: дополнительную букву "Р" вместо звёздочки можно использовать только один раз, иначе мы дважды посчитаем одно и то же слово. Чтобы избежать такого дублирования, вместо звёздочек, расположенных справа от обозначенных букв, мы будем подставлять все возможные буквы из числа заданных, а вместо звёздочек, расположенных слева, — на одну букву меньше. В данной задаче, например, в варианте "*Р*Р*" звёздочка справа (после обеих букв "Р") будет заменяться на 5 разных букв, а звёздочки левее любой из букв "Р" — только на 4 разные буквы (буква "Р" тут исключается).

Запишем решение в виде таблицы. При этом варианты в первой колонке таблице формируется так:

  • первая буква "Р" сначала стоит в первой позиции;
  • вторая буква "Р" поочерёдно "пробегает" по всем позициям правее;
  • затем первая "Р" ставится во вторую позицию, а вторая "Р" опять "пробегает" все оставшиеся позиции вправо от первой и т.д.
ВариантыКол-ва вариантов в позицияхВсего
PP***1 ⋅ 1 ⋅ 5 ⋅ 5 ⋅ 5
Р*Р**1 ⋅ 4 ⋅ 1 ⋅ 5 ⋅ 5
Р**Р*1 ⋅ 4 ⋅ 4 ⋅ 1 ⋅ 5
Р***Р1 ⋅ 4 ⋅ 4 ⋅ 4 ⋅ 1
*РР**4 ⋅ 1 ⋅ 1 ⋅ 5 ⋅ 5
*Р*Р*4 ⋅ 1 ⋅ 4 ⋅ 1 ⋅ 5
*Р**Р4 ⋅ 1 ⋅ 4 ⋅ 4 ⋅ 1
**РР*4 ⋅ 4 ⋅ 1 ⋅ 1 ⋅ 5
**Р*Р4 ⋅ 4 ⋅ 1 ⋅ 4 ⋅ 1
***РР4 ⋅ 4 ⋅ 4 ⋅ 1 ⋅ 1

ИТОГО: 125 + 100 + 80 + 64 + 100 + 80 + 64 + 80 + 64 + 64 = 821.

Ответ: 821

Задача 7

Джон составляет 4-буквенные коды из букв П, О, Л, Ю, Щ, А, Я. Каждую букву можно использовать любое количество раз, при этом код не может начинаться с буквы Щ и должен содержать хотя бы одну гласную. Сколько различных кодов может составить Джон?

Решение:
Способ 1

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

  1. Общее число возможных слов без учёта ограничений:
  2. Количество слов, начинающихся с Щ (Щ***):
  3. Количество слов, в которых нет гласных букв (т.е. допустимо только три буквы — П,Л,Щ):
  4. Количество слов, начинающихся с Щ и не содержащих гласных букв (Щ***):
  5. Количество подходящих слов: 2401 - 343 - 81 + 27 = 2004.
Способ 2
  1. Первая буква кода — любая, кроме Щ, — всего таких букв 6. Из этих 6 случаев возможны 4, начинающиеся с гласной (А,Я,О,Ю), тогда в остальных 3 позициях слова гласной может не быть (т.е. допустимо использование любых букв из 7, входящих в алфавит). В 2 случаях же (начало слова с П или Л) в оставшихся 3 позициях слова должны быть минимум одна гласная.
  2. Для каждого из 4 первых случаев возможно вариантов: всего 4 ⋅ 343 = 1372 вариантов.
  3. Для 2 последних случаев слово может включать одну, две или три гласных. То есть возможны варианты:
    • 1 гласная и 2 согласных: ГГГ, СГС, ССГ, по гласным в каждом случае возможно 4 варианта, по согласным возможно три в квадрате = 9 вариантов, всего возможно 3 ⋅ 4 ⋅ 9 = 108 вариантов;
    • 2 гласных и 1 согласная: ГГС, ГСГ, СГГ, по гласным в каждом случае возможно: четыре в квадрате = 16 вариантов, по согласным возможно 3 варианта, всего возможно 3 ⋅ 16 ⋅ 3 = 144 варианта;
    • 3 гласных: ГГГ, возможно четыре в кубе = 64 варианта.

    Тогда для каждого такого случая имеем 108 + 144 + 64 = 316 вариантов, а для обоих этих случаев — 316 ⋅ 2 = 632 варианта.
  4. Общее число вариантов равно: 1372 + 632 = 2004 различных слова.
Решение на Python
counter = 0  # переменная которая будет служить как счётчик
for a in range(7):  # 1 позиция
    for b in range(7):  # 2 позиция
        for c in range(7):  # 3 позиция
            for d in range(7):  # 4 позиция
                # отбор по условию и подсчёт 1 - Щ
                # нечётные значения — согласные
                # таких нечётных значений в интервале [0, 6] как раз три: {1,3,5}
                if a != 1 and not ((a % 2 == 1) and (b % 2 == 1) and (c % 2 == 1) and (d % 2 == 1)):
                    # в первой позиции – не Щ, и не должно быть, чтобы во всех четырёх позициях оказались согласные
                    counter += 1  # тогда этот вариант подсчитываем
print(counter)  # Выводим ответ на задачу

Ответ: 2004

Задача 8

Тимофей составляет 5-буквенные коды из букв Т, И, М, О, Ф, Е, Й. Буква Т должна входить в код не менее одного раза, а буква Й — не более одного раза. Сколько различных кодов может составить Тимофей?

Решение:
  1. Буква Й входит в 6-буквенный код не более 1 раза, т.е. или входит только одна, или нет вообще: *****, Й****, *Й***, **Й**, ***Й*, ****Й. По сути, замечаем, что здесь один вариант, в котором буквы Т,И,М,О,Ф,Е стоят в 5 позициях, плюс пять вариантов, где буквы Т,И,М,О,Ф,Е стоят на 4 позициях._
  2. Подсчитаем по каждому из двух указанных случаев, сколько возможно различных кодов вообще (без учёта требования к букве Т):
    • Шесть букв на позициях: 6^5 = 7776 (аналог пятизначного числа в шестеричной системе счисления: количество возможных чисел равно основанию системы счисления в степени количества разрядов).
    • Шесть букв на 4 позициях: 6^4 = 1296, и таких вариантов пять, т.е. всего различных кодов здесь 5 * 1296 = 6480.
    • Тогда общее количество кодов равно: 7776 + 6480 = 14256.
  3. Из них надо исключить варианты, в которых нет буквы Т, т.е. 1 вариант, где на 5 позициях стоят только буквы И, М, О, Ф, Е, и 5 вариантов, где эти 5 букв стоят на 4 позициях:
    • Пять букв на 5 позициях: 5^5 = 3125.
    • Пять букв на 4 позициях: 5^4 = 625, таких вариантов 5: всего 5 * 625 = 3125.
    • Общее количество исключаемых вариантов равно 3125 + 3125 = 6250.
  4. Тогда всего допустимых кодов будет 14256 - 6250 = 8006.

Ответ: 8006

Задача 9 (Классическая)

Женя составляет 5-буквенные слова, в которых встречаются только буквы А, Б, В, Г, причём буква А появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Женя?

Решение:

Напишем программу на языке Python.

counter = 0
for x1 in 'АБВГ':
    for x2 in 'АБВГ':
        for x3 in 'АБВГ':
            for x4 in 'АБВГ':
                for x5 in 'АБВГ':
                    s = x1 + x2 + x3 + x4 + x5
                    if s.count('А') == 1:
                        counter += 1
print(counter)

Т.к. слова состоят из 5-ти символов, то мы формируем пять вложенных циклов! В каждом цикле перебираем все буквы, которые нам дали. Внутри циклов мы составляем само слово в переменной s. Таким образом, в переменной s "прокрутятся" все возможные комбинации. Но мы подсчитываем не все комбинации, а только те, где всего одна буква А. Важно не перепутать русские и английские буквы.

Ответ: 405

Задача 10 (Каждую букву можно использовать один раз)

Артур составляет 5-буквенные коды из букв Е, С, А, У, Л. Каждую букву нужно использовать ровно один раз, при этом нельзя ставить рядом две гласные. Сколько различных кодов может составить Артур?

Решение:

Запрограммируем решение этой задачи на Python.

counter = 0
for x1 in 'ЕСАУЛ':
    for x2 in 'ЕСАУЛ':
        for x3 in 'ЕСАУЛ':
            for x4 in 'ЕСАУЛ':
                for x5 in 'ЕСАУЛ':
                    s = x1 + x2 + x3 + x4 + x5
                    if s.count(x1) == 1 and s.count(x2) == 1 and s.count(x3) == 1 and s.count(x4) == 1 and s.count(x5) == 1:
                        if s.count('ЕА') == 0 and s.count('АЕ') == 0 and s.count('ЕУ') == 0 and s.count('УЕ') == 0 and s.count('АУ') == 0 and s.count('УА') == 0:
                            counter += 1   
print(counter)

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

Ответ: 12

Задача 11 (Буквы составляют перестановкой)

Петя составляет шестибуквенные слова перестановкой букв слова КАБАЛА. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?

Решение:
counter = 0
for x1 in 'КБЛА':
    for x2 in 'КБЛА':
        for x3 in 'КБЛА':
            for x4 in 'КБЛА':
                for x5 in 'КБЛА':
                    for x6 in 'КБЛА':
                        s= x1 + x2 + x3 + x4 + x5 + x6
                        if s.count('К') == 1 and s.count('А') == 3 and s.count('Б') == 1 and s.count('Л') == 1:
                            if s.count('АА') == 0:
                                counter += 1
print(counter)

Повторяющиеся буквы в строке, из который берём символы в циклах, всегда убираем.

Слова составляются перестановкой, значит, можно представить, что просто собирают из кубиков КАБАЛА различные слова. Следовательно, в наших словах будет ровно одна буква "К", три буквы "А", одна буква "Б" и одна буква "Л". Это программируем с помощью условия и функции .count().

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

Если все условия будут пройдены, то мы подсчитываем такие комбинации.

Ответ: 24

Задача 12 (Проверяем первую букву слова)

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

Решение:

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

counter = 0
for x1 in 'ЕГЭ':
    for x2 in 'ЕГЭ':
        for x3 in 'ЕГЭ':
            for x4 in 'ЕГЭ':
                for x5 in 'ЕГЭ':
                    s= x1 + x2 + x3 + x4 + x5
                    if x1 == 'Е' or x1 == 'Э':
                        counter += 1   
print(counter)

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

Ответ: 162

Задача 13 (Закрепление)

Сергей составляет 6-буквенные коды из букв С, О, Л, О, В, Е, Й. Буква Й может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой Е. Все остальные буквы могут встречаться произвольное количество раз или не встречаться совсем. Сколько различных кодов может составить Сергей?

Решение:

Эта задача примечательная тем, что буква "О" в слове "СОЛОВЕЙ" повторяется. В этом случае мы должны убрать повторение буквы из перебора.

counter = 0
for x1 in 'СОЛВЕЙ':
    for x2 in 'СОЛВЕЙ':
        for x3 in 'СОЛВЕЙ':
            for x4 in 'СОЛВЕЙ':
                for x5 in 'СОЛВЕЙ':
                    for x6 in 'СОЛВЕЙ':
                        s = x1 + x2 + x3 + x4 + x5 + x6
                        if s.count('Й') <= 1 and x1 != 'Й' and x6 != 'Й' and s.count('ЕЙ') == 0 and s.count('ЙЕ') == 0:
                            counter += 1   
print(counter)

Здесь также учитываем остальные условия.

Ответ: 23625

Задача 14 (Количество гласных)

Василий составляет 4-буквенные коды из букв Г, А, Ф, Н, И, Й. Каждую букву можно использовать любое количество раз, при этом код не может начинаться с буквы Й и должен содержать хотя бы одну гласную. Сколько различных кодов может составить Василий?

Решение:
counter = 0
for x1 in 'ГАФНИЙ':
    for x2 in 'ГАФНИЙ':
        for x3 in 'ГАФНИЙ':
            for x4 in 'ГАФНИЙ':
                s = x1 + x2 + x3 + x4
                if x1 != 'Й' and s.count('А') + s.count('И') >= 1:
                    counter += 1
print(counter)

Ответ: 888

Задача 15 (Перебор чисел)

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

Решение:
counter1 = 0
counter2 = 0
for x1 in '1234567':
    for x2 in '01234567':
        for x3 in '01234567':
            for x4 in '01234567':
                for x5 in '01234567':
                    for x6 in '01234567':
                        for x7 in '01234567':
                            s = x1 + x2 + x3 + x4 + x5 + x6 + x7
                            if s.count(x1) == 1 and s.count(x2) == 1 and s.count(x3) == 1 and s.count(x4) == 1 and s.count(x5) == 1 and s.count(x6) == 1 and s.count(x7) == 1:
                                if int(x1) % 2 == 0 and int(x2) % 2 == 1 and int(x3) % 2 == 0 and int(x4) % 2 == 1 and int(x5) % 2 == 0 and int(x6) % 2 == 1 and int(x7) % 2 == 0:
                                    counter1 += 1
                                if int(x1) % 2 == 1 and int(x2) % 2 == 0 and int(x3) % 2 == 1 and int(x4) % 2 == 0 and int(x5) % 2 == 1 and int(x6) % 2 == 0 and int(x7) % 2 == 1:
                                    counter2 += 1
print(counter1 + counter2)

Число не может начинаться с нуля. Поэтому ноль был исключён из первого цикла.

Первое условие следит за тем, чтобы каждая цифра встречалась один раз в числе. Второе условие подсчитывает количество вариантов, когда первая цифра чётная. Второе условие следит за тем, чтобы чётность и нечётность цифр чередовалась. Третье условие, наоборот, подсчитывает варианты, когда первая цифра нечётная.

Операция % - остаток от деления. Если остаток от деления на 2 равен нулю, то число чётное. Если остаток от деления на 2 равен 1, то число нечётное.

Функция int() преобразует символ в число. Ведь мы работаем именно с символами, а не с реальными числами.

Ответ: 1008

Задача 16 (Числа, Закрепление)

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

Решение:
counter = 0
for x1 in '1234567':
    for x2 in '01234567':
        for x3 in '01234567':
            for x4 in '01234567':
                if (x1 == x2 and x2 != x3 and x2 != x4 and x3 != x4) or (x2 == x3 and x3 != x1 and x3 != x4 and x1 != x4) or (x3 == x4 and x3 != x2 and x3 != x1 and x1 != x2):
                    counter += 1
print(counter)

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

Ответ: 882

Задача 17 (Числа, важный приём)

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

Решение:
counter = 0
for x1 in '123456789ABCDEF':
    for x2 in '0123456789ABCDEF':
        for x3 in '0123456789ABCDEF':
            if x1 >= x2 >= x3:
                counter += 1    
print(counter)

Символы можно сравнивает знаками больше или меньше. Символы-цифры сравниваются, как обычные числа. Буквы сравниваются в алфавитном порядке.

Применяем этот приём и получаем ответ.

Ответ: 815

Задача 18 (Две чётные и две нечётные цифры не стоят рядом)

Сколько существует чисел, делящихся на 5, десятичная запись которых содержит 7 цифр, причём все цифры различны и никакие две чётные и две нечётные цифры не стоят рядом.

counter = 0
for x1 in '123456789':
    for x2 in '0123456789':
        for x3 in '0123456789':
            for x4 in '0123456789':
                for x5 in '0123456789':
                    for x6 in '0123456789':
                        for x7 in '05':
                            s = x1 + x2 + x3 + x4 + x5 + x6 + x7
                            if s.count(x1) == 1 and s.count(x2) == 1 and s.count(x3) == 1 and s.count(x4) == 1 and s.count(x5) == 1 and s.count(x6) == 1 and s.count(x7) == 1:                      
                                if x1 in '02468' and x2 in '13579' and x3 in '02468' and x4 in '13579' and x5 in '02468' and x6 in '13579' and x7 in '02468':
                                    counter += 1
                                if x1 in '13579' and x2 in '02468' and x3 in '13579' and x4 in '02468' and x5 in '13579' and x6 in '02468' and x7 in '13579':
                                    counter += 1
print(counter)

Перебираем 7 разрядов десятичного числа. С нуля число не может начинаться, поэтому из первого цикла удаляем ноль.

Число должно делиться на 5, значит, в последнем цикле оставляем только 0 и 5.

Все цифры различны, поэтому применяем условие, что символ x1 встречается 1 раз, символ x2 встречается 1 раз и т.д.

Фраза "две чётные и две нечётные цифры не стоят рядом" обозначает, что цифры должны чередоваться. Например, чётная, нечётная, чётная, нечётная и т.д. (или наоборот).

Направление задаёт именно первая цифра, остальные цифры выстраиваются по ней.

Проверить чётность/нечётность цифр просто, мы проверям существует ли конкретный символ в строке из чётных или нечётных цифр.

У нас два равноправных случая: когда первая цифра чётная, и когда первая цифра нечётная.

Ответ: 2880

Задача 19 (Со списками, классическая)

Все 4-буквенные слова, составленные из букв А, Е, И, О записаны в алфавитном порядке и пронумерованы. Вот начало списка:

  1. АААА
  2. АААЕ
  3. АААИ
  4. АААО
  5. ААЕА ...

Запишите слово, стоящее на 248-м месте от начала списка.

Решение:
Решение на Python
counter = 0
for x1 in 'АЕИО':
    for x2 in 'АЕИО':
        for x3 in 'АЕИО':
            for x4 in 'АЕИО':
                s = x1 + x2 + x3 + x4
                counter += 1
                if counter == 248:
                    print(s)

Переменная k это порядковый номер слов. Мы подсчитываем все слова без какого-либо условия.

Каждая переменная x перебирает буквы, которые используются для составления слов. Важно: буквы нужно перебирать в том порядке, в котором они идут в правом столбце списка, приведенного в задаче.

Мы составляем 4 вложенных цикла, т.к. длина слов равна 4-м буквам.

В переменной s формируется каждое слово из списка. Если порядковый номер равен 248, то печатаем слово s.

Решение аналитическое

Обозначим условно А - 0, Е - 1, И - 2, О - 3.

Важно: Нужно буквам присваивать цифры именно в том порядке, в котором они идут в самом правом столбце, потому что буквы могут дать в "перепутанном порядке" (например Е, А, И, О), и тогда ничего не получится.

  1. АААА - 0
  2. АААЕ - 1
  3. АААИ - 2
  4. АААО - 3
  5. ААЕА - 10 ...

Теперь запишем список с помощью цифр:

  1. 0000
  2. 0001
  3. 0002
  4. 0003
  5. 0010 ...

Получился обычный счёт в четверичной системе!! (всего используются 4 цифры: 0, 1, 2, 3). А слева нумерация показывает соответствие нашей десятичной системе. Но все числа десятичной системы в этой таблице соответствия сдвинуты на 1, ведь мы должны были начать с нуля.

Нас просят записать слово стоящее на 248, т.е. если была обычная таблица соответствия чисел десятичной системы и четверичной системы, слово стоящее на 248 месте, находилось бы на 247 (248 - 1) месте. Значит, наше искомое четверичное число соответствует 247 в десятичной системе.

Переведём число 247 в четверичную систему!

Получилось число 3313 в четверичной системе. Сделаем обратное декодирование в буквы. Таким образом, ответ будет ООЕО.

Ответ: ООЕО

Задача 20 (Классика, Другая вариация)

Все 5-буквенные слова, составленные из букв А, Р, У, К записаны в алфавитном порядке. Вот начало списка:

  1. ААААА
  2. ААААК
  3. ААААР
  4. ААААУ
  5. АААКА ……

Укажите номер слова УКАРА

Решение:
Решение на Python
counter = 0
for x1 in 'АКРУ':
    for x2 in 'АКРУ':
        for x3 in 'АКРУ':
            for x4 in 'АКРУ':
                for x5 in 'АКРУ':
                    s = x1 + x2 + x3 + x4 + x5
                    counter += 1
                    if s == 'УКАРА':
                        print(counter)
                        break

Появилось нужное слово – выводим в консоль порядковый номер.

Решение аналитическое

Закодируем буквы цифрами: А - 0, К - 1, Р - 2, У - 3. Здесь как раз буквы даны не в том порядке, как они идут в самом правом столбце. Но мы должны кодировать именно в том порядке, как буквы идут в самом правом столбце.

У нас получилось четыре цифры! Значит снова можно слова превратить в таблицу соответствия между десятичной системой и четверичной системой. Но десятичная система смещена на 1 позицию.

  1. 00000
  2. 00001
  3. 00002
  4. 00003
  5. 00010 ……

Выписываем данное нам слово и посмотрим, какое число в четверичной системе было бы, если бы у нас были вместо слов числа в четверичной системе!

Получили число в четверичной системе 31020. Узнаем, какое число в десятичной системе соответствовало этому числу, если бы была обычная таблица соответствия. Для этого переведём число 31020 из четверичной системы в десятичную. Перевод делаем по аналогии перевода из двоичной системы в десятичную.

Но помним, что у нас нумерация идёт на 1 быстрее, нежели мы бы поставили десятичные числа, как в таблице соответствия, потому что нумерация начинается не с нуля, а с 1. Поэтому к числу 840 нужно прибавить 1, и в ответе будет 841

Ответ: 841

Задача 21 (С ловушкой)

Все пятибуквенные слова, составленные из букв Ф, Л, А, М, И, Н, Г, О записаны в алфавитном порядке и пронумерованы.

Вот начало списка:

  1. ААААА
  2. ААААГ
  3. ААААИ
  4. ААААЛ
  5. ААААМ
  6. ААААН
  7. ААААО ...

Определите в этом списке количество слов с нечётными номерами, которые не начинаются с буквы Н и при этом содержат в своей записи не более одной букв О.

Решение:
c=0
k=0
for x1 in 'АГИЛМНОФ':
    for x2 in 'АГИЛМНОФ':
        for x3 in 'АГИЛМНОФ':
            for x4 in 'АГИЛМНОФ':
                for x5 in 'АГИЛМНОФ':
                    s = x1 + x2 + x3 + x4 + x5
                    k += 1
                    if k % 2 != 0 and x1 != 'Н' and s.count('О') <= 1:
                        c += 1
print(c)

Ловушка заключается в том, что в правом столбце буква Ф не влезла в видимую часть списка. Её нужно не забыть написать в циклы. Т.е. количество букв, которое перебирается ложно быть равно 8, как и в слове ФЛАМИНГО.

Так же здесь необычно то, что нужно найти количество комбинаций. Счётчик, который будет отвечать за ответ обозначим за c. Пусть k по-прежнему обозначает порядковый номер слов.

Здесь мы не имеем право убирать букву Н из первого цикла. Нужно именно использовать переменную x1 в условии, т.к. эта переменная отвечает за первую букву.

Ответ: 11907

Задача 22 (Демонстрационный вариант ЕГЭ по информатике, 2020)

Все 4-буквенные слова, в составе которых могут быть буквы Н, О, Т, К, И, записаны в алфавитном порядке и пронумерованы, начиная с 1. Ниже приведено начало списка.

  1. ИИИИ
  2. ИИИК
  3. ИИИН
  4. ИИИО
  5. ИИИТ
  6. ИИКИ …

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

Решение:
Решение на Python
counter = 0
for x1 in 'ИКНОТ':
    for x2 in 'ИКНОТ':
        for x3 in 'ИКНОТ':
            for x4 in 'ИКНОТ':
                s = x1 + x2 + x3 + x4
                counter += 1
                if x1 == 'О':
                    print(counter)

Распечатаются разные номера слов, которые начинаются с буквы "О". Мы выбираем самый первый.

Решение аналитическое

Закодируем буквы цифрами. Получилось 5 цифр (0, 1, 2, 3, 4), значит, будем работать в пятеричной системе.

Нужно найти номер первого слова, которое начинается с буквы О. Если говорить на языке пятеричных чисел, то нужно найти номер числа 3000. Мы "забиваем нулями", чтобы число было четырёхразрядное, т.к. слова 4-х буквенные. Именно нулями, потому что нужно именно первое слово найти.

Теперь, как в предыдущей задаче, переведём число 3000 из пятеричной системы в десятичную = 375.

Но опять же должны прибавить 1 к числу 375, т.к. нумерация отличается от десятичных чисел на 1 в большую сторону.

Ответ: 376

Задача 23 (ЕГЭ по информатике 04.07.24)

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

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

  1. ААААА
  2. ААААЙ
  3. ААААЛ
  4. ААААМ
  5. АААЙА ...

Под каким номером в списке идёт последнее слово, которое не содержит ни одной буквы М, ни одной буквы Л и не содержит букв Й, стоящих рядом?

Решение:

Решение на Python
counter = 0
maxi = 0
for x1 in 'АЙЛМ':
    for x2 in 'АЙЛМ':
        for x3 in 'АЙЛМ':
            for x4 in 'АЙЛМ':
                for x5 in 'АЙЛМ':
                    s = x1 + x2 + x3 + x4 + x5
                    counter += 1
                    if s.count('М') == 0 and s.count('Л') == 0 and s.count('ЙЙ') == 0:
                        maxi = max(maxi, counter)
print(maxi)

Чтобы найти последний номер, мы используем приём "царь горы". Это позволяет найти максимальный номер, который подходит под условие задачи.

Ответ: 274

Задача 24 (Демонстрационный вариант ЕГЭ по информатике, 2024)

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

Решение
Решение аналитическое

Решим вначале аналитически, затем можно будет посмотреть наглядное(не идеальное) решение с кодом на Python.

Главное условие в задаче это то что не должно быть рядом две чётных или две нечётных цифры. Рассмотрим вероятность появления таких двух чисел. Если число начинается с чётной цифры(кроме 0), то вероятность появления каждой цифры в числе следующая:

Первая цифра: 3(2,4,6) Вторая цифра: 4(1,3,5,7) Третья цифра: 4(0,2,4,6) Четвёртая цифра: 4(1,3,5,7) Пятая цифра: 4(0,2,4,6)

Чтобы получить количество возможных таких чисел нужно перемножить все вероятности: 34444, но мы пока этого делать не будем т.к. это не всё условие задачи.

Далее наоборот посчитаем количество вероятностей цифр в числе начинающегося с нечётной цифры: 4(1,3,5,7); 4(0,2,4,6); 4(1,3,5,7); 4; 4

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

  1. Если с чётной цифры: 3 3(4-1) 4 3(4-1) 4
  2. Если с нечётной цифры: 3(4-1) 4 3(4-1) 4 3(4-1)

Далее последнее условие это чтобы цифры в числе не повторялись, снова отнимаем вероятности:

  1. 3 3 3(4-1 т.к. одно из трёх чисел ранее появилось в числе) 2 (3-1) 2(4 - 2 т.к. здесь уже 2 цифры из набора появились ранее в числе)
  2. 3 4 2(3 - 1: ещё раз, т.к. ранее через разряд какая-то 1 цифра уже появилась в числе) 3(4-1) 1(3-2)

Вычислим количество чисел для двух вариантов:

  1. 3 ⋅ 3 ⋅ 3 ⋅ 2 ⋅ 2 = 108
  2. 3 ⋅ 4 ⋅ 2 ⋅ 3 ⋅ 1 = 72

Теперь общее, т.е. сумма этих двух и будет ответом на вопрос задачи: 108 + 72 = 180

Решение на Python
counter = 0
for x1 in '1234567':
    for x2 in '01234567':
        for x3 in '01234567':
            for x4 in '01234567':
                for x5 in '01234567':
                    s = x1 + x2 + x3 + x4 + x5
                    if s.count('1') == 0:
                        if (s.count(x1) == 1 and s.count(x2) == 1 and s.count(x3) == 1
                                and s.count(x4) == 1 and s.count(x5) == 1):
                            if x1 in '246' and x2 in '1357' and x3 in '0246' and x4 in '1357' and x5 in '0246':
                                counter += 1
                            elif x1 in '1357' and x2 in '0246' and x3 in '1357' and x4 in '0246' and x5 in '1357':
                                counter += 1
print(counter)

Ответ: 180

Задача 25 (Демонстрационный вариант ЕГЭ по информатике, 2025)

Определите количество 12-ричных пятиразрядных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовых значением, превышающим 8.

Решение
Решение аналитическое

Итак, речь идёт об определении количества пятиразрядных двенадцатеричных чисел удовлетворяющих двум условиям. Рассмотрим первое условие когда в записи ровно одна цифра 7, т.е. появляется в числе только 1 раз: 7****, *7***, **7**, ***7*, ****7 и далее просчитаем вероятности появления числа со вторым условием с учётом каждого случая для первого условия: 7**** = 1 * 11 * 11 * 11 * 11 = 14641.

Это количество чисел с первой цифрой 7 вначале числа, от этого количества необходимо отнять количество вариантов числа в котором будет более 3 чисел со значением превышающим 8. Количество таких цифр 3 (9, A, B) и количество мест в которых они могут появиться = 4. Получается из формул комбинаторики следует использовать формулу - размещение с повторениями: (количество вариантов равно k цифр в степени n мест).

Объяснение формулы следующее: пусть имеется исходное множество из различных элементов, из которого требуется выбрать k элементов и расставлять их на n места, так что каждый элемент может использоваться несколько раз. Применим эту формулу:

Вычислим окончательное количество вариантов числа с учётом первого случая для обоих условий задачи: 7**** = 1 * 11 * 11 *11 * 11 = 14641 - 81 = 14560 вариантов когда число 7 встречается первой цифрой 1 раз в пятизначном двенадцатеричном числе и также в этом же числе не более трёх цифр с числом не превышающим 8.

Осталось посчитать остальные варианты когда цифра 7 будет стоять во всех остальных местах числа:

*7*** = 10 * 1 * 11 * 11 * 11 - 3^4 = 13299

**7** = 10 * 11 * 1 * 11 * 11 - 3^4 = 13229

***7* = 10 * 11 * 11 * 1 * 11 - 3^4 = 13229

****7 = 10 * 11 * 11 * 11 * 1 - 3^4 = 13229

Чтобы получить ответ, осталось только просуммировать все полученные количества вариантов чисел = 14560 + 13229 + 13229 + 13229 + 13229 = 67476.

Решение на Python
counter = 0
for n1 in '123456789AB':  # Число не может начинаться с нуля
    for n2 in '0123456789AB':  #
        for n3 in '0123456789AB':
            for n4 in '0123456789AB':
                for n5 in '0123456789AB':
                    s = n1 + n2 + n3 + n4 + n5
                    if s.count('7') == 1 and s.count('9') + s.count('A') + s.count('B') <= 3:
                        counter += 1
print(counter)

Ответ: 67476

Задача 26 Яндекс Учебник(Сложная)

Все семибуквенные слова, в составе которых могут быть только русские буквы Ф, А, В, О, Р, И, Т, записаны в алфавитном порядке и пронумерованы, начиная с 1.

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

  1. ААААААА
  2. ААААААВ
  3. ААААААИ
  4. ААААААО
  5. ААААААР
  6. ААААААТ
  7. ААААААФ
  8. АААААВА ...

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

Решение:
Аналитическое решение:

Комбинации для буквосочетания для ТРИО по условию задачи следующие: *ТРИО**, **ТРИО*. На позиции * может расположиться любая буква(7 вариантов букв). Для начала вычислим сколько вообще возможных комбинаций может быть в двух вариациях для нашего ТРИО:

  1. *ТРИО** чётных и нечётных позиций.
  2. **ТРИО* чётных и нечётных позиций.

Остаётся разобраться сколько конкретно в первом и во втором случае позиций будут находиться под чётными номерами и сколько под нечётными?

Для этого сначала буквы сопоставляются цифрам: А – 0, В – 1, И – 2, О – 3, Р – 4, Т – 5, Ф – 6. В результате исходная задача сводится к следующей:

Все 7-значные числа, составленные из цифр записаны в порядке возрастания. Вот начало списка:

  1. 0000000
  2. 0000001
  3. 0000002
  4. 0000003
  5. 0000004
  6. 0000005
  7. 0000006
  8. 0000010 ...

Видим по списку, что имеем дело с 7-ичной системой счисления. Получается число 7: стоит под номером №8(т.е. номер на 1 больше чем само число).

По условию задачу нам необходимо тогда просчитать такие комбинации: *5423** и **5423*(* — любая цифра от минимальной 0 до максимальной 6).

Возьмём калькулятор и начало первой комбинации(чтобы было понятно, в дальнейшем можно будет уже догадаться до ответа): 0542300 – переведём число из семеричной системы в десятичную(через развёрнутую запись числа) и прибавим 1, чтобы получить номер позиции в списке:

Значит номер позиции 0542300 равен переводу числа в десятичную систему плюс 1: 94472 + 1 = 94473(№ нечётный у начала списка)

Аналогично также вычислим позицию для конца списка для комбинации 6542366 (вместо 0 – 6): Позиция для 6542366 равна 800414 + 1 = 800425(№ нечётный номер у конца списка). Значит зная что всего у нас 343 нечётных и чётных позиций(вычислили в самом начале) можно сделать вывод что номер первой и последней позиции нечётный значит нечётных номер позиций на 1 больше чем чётных. Получается 171(чётных) + 172(нечётных) = 343. Получается что всего 172 нечётных позиции у комбинации 0542300 или переводя на буквы у комбинации *ТРИО**.

Аналогично также вычислим начало списка для второй комбинации 0054230(переводя на буквы это ААТРИОА):

Значит номер позиции 0054230 равен переводу числа в десятичную систему плюс 1: 13496 + 1 = 13497(№ нечётный у начала списка)

Аналогично можно также вычислить позицию для конца списка для комбинации 6654236, но на самом деле вычислять ничего не нужно т.к. позиция также будет нечётная. До этого легко просто догадаться например так: раз первая позиция 13496 нечётная то следующая будет (вторая) чётная, затем третья снова нечётная. А 343 позиция? Получается также будет нечётная. Вывод имеем также как и в первой комбинации(*ТРИО**) для комбинации **ТРИО* — 171 чётную и 172 нечётных позиции(всего 343).

Для ответа остаётся только сложить количество нечётных позиций у первой и у второй комбинации: 172 + 172 = 344.

Решение с доказательством выше достаточно много отнимет времени на экзамене если всё это считать как это написано выше. Можно конечно взять самую короткую комбинацию **ТРИО* → вычислить сколько всего комбинаций возможно(343) → перевести в число в семеричной системе 0054230 → и затем перевести в десятичную и получить номер позиции → увидеть что он нечётный и общее количество нечётное(343) значит 171 чётных и 172 нечётных и уже догадаться что для второй позиции(**ТРИО*) будет всё тоже самое 171 чётная и 172 нечётная. Сложить количество нечётных (там и там) и получить ответ. Но возможно некоторым (как в прочем и мне) решение на Python такой задачи покажется легче и быстрее.

Решение на Python

С помощью библиотеки itertools:

from itertools import product
count = 0
number = 0
for p in product(sorted("ФАВОРИТ"), repeat=7):
    number += 1
    if number % 2 != 0 and ((p[1] == 'Т' and p[2] == 'Р' and p[3] == 'И' and p[4] == 'О') or (p[2] == 'Т' and p[3] == 'Р' and p[4] == 'И' and p[5] == 'О')):
        count += 1
print(count)

Разберём построчно что тут происходит:

  1. Импортируем из пакета itertool функцию product(что она делает можно почитать в документации нажимаем сюда). Если кратко – она отработает как вложенные циклы;
  2. Создаём переменную счётчик для ответа;
  3. Создаём переменную счётчик, чтобы следить за номером позиции;
  4. Запускаем цикл то что вернёт нам функция product(первую позицию списка, вторую и т.д. до конца). Первым параметром подаём отсортированные по алфавиту наши буквы(можно и не сортировать если написать их в порядке как они идут по последовательностям — А – 0, В – 1, И – 2, О – 3, Р – 4, Т – 5, Ф – 6. Без sorted функции просто тогда первым параметром пишем строку: 'АВИОРТФ'). Второй параметр функции product принимает количество повторений каждого символа строки(у нас их 7, как видим по примеру списка из задания);
  5. Начинается список наш с единицы. Значит переменную для номера сразу с нуля увеличиваем в начале цикла на 1;
  6. Условие задачи number % 2 != 0 – номер позиции нечётное число И (два условия для появления нашего ТРИО: *ТРИО**(индексы символов Т Р И О — 1,2,3,4) и **ТРИО*(индексы символов Т Р И О у строки — 2,3,4,5);
  7. Если условие выполнилось подсчитываем комбинацию с помощью переменной счётчика;
  8. Выводим ответ на задачу.

Ответ: 344

P.S. С помощью itertools и функции product можно решить не одну подобную задачу по ЕГЭ и не только с номером 8, а также и другие где понадобятся вложенные циклы и перебор возможных значений.

Задача 27 (Демоверсия ЕГЭ 2026)

Все пятибуквенные слова, составленные из букв С, Т, Р, О, К, А, записаны в алфавитном порядке и пронумерованы.

Вот начало списка:

  1. ААААА
  2. ААААК
  3. ААААО
  4. ААААР
  5. ААААС
  6. ААААТ ……

Определите, под каким номером в этом списке стоит последнее слово с чётным номером, которое не начинается с букв А, С или Т и при этом содержит в своей записи ровно две буквы О.

Решение на Python

С помощью библиотеки itertools:

from itertools import product
last_number = 0
number = 0
for p in product(sorted("СТРОКА"), repeat=5):
    number += 1
    if number % 2 == 0 and ((p[0] != 'А' and p[0] != 'С' and p[0] != 'Т') and p.count('О') == 2):
        last_number = number
print(last_number)

Разберём построчно что тут происходит:

  1. Импортируем из пакета itertool функцию product(что она делает можно почитать в документации нажимаем сюда).
  2. Создаём переменную для ответа;
  3. Создаём переменную счётчик, чтобы следить за номером позиции;
  4. Запускаем цикл то что вернёт нам функция product(первую позицию списка, вторую и т.д. до конца). Первым параметром подаём отсортированные по алфавиту наши буквы(можно и не сортировать если написать их в порядке как они идут по последовательностям). Второй параметр функции product принимает количество повторений каждого символа строки(у нас их 5, как видим по примеру списка из задания);
  5. Начинается список наш с единицы. Значит переменную для номера сразу с нуля увеличиваем в начале цикла на 1;
  6. Условие задачи number % 2 == 0 – номер позиции чётное число И два условия для появления подходящего слова согласно условию задачи;
  7. Если условие выполнилось — с помощью переменной счётчика сохраняем значение позиции в переменную с ответом и продолжаем перебор дальнейших вариантов циклом, т.к. нас интересует последнее слово которое будет соответствовать условиям задачи;
  8. Выводим ответ на задачу.

Ответ: 5058

Попробуйте сами запустить код в окне ниже с интерпретатором Python и повторите примеры из статьи чтобы самим увидеть и понять как всё это работает. Для этого в ячейке с кодом нажмите клавиши на клавиатуре Shift+Enter или запустите код через кнопку Run по значку ▶.