Найти тему

Разбор номера 7011 ЕГЭ по информатике #23

Условие: КЕГЭ № 7011 (Уровень: Средний)
Статья подготовлена командой itpy
Полный разбор задачи в Notion

Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены коды:

A. Прибавь 2
B. Прибавь 3
С. Умножь на 2

Первая команда увеличивает число на 2 раза, вторая – на 3 раза, третья – в 2 раза. Программа для исполнителя – это последовательность команд.

Сколько существует программ, для которых при исходном числе 2 результатом будет являться число 40, при этом траектория вычисления не содержит число 28, а также не содержит подпоследовательность команд BACA. Траектория вычисления программы – это последовательности результатов выполнения всех команд.

Решение через Python и комментарии к нему:

-2

Комментарии к коду решения:

  1. def F(a, b, s: str): - объявление функции F с тремя параметрами: a и b (целые числа) и s (строка).
  2. if a >= b or a == 28: - проверка условия. Если a больше или равно b или a равно 28, то выполняется следующий блок кода.
  3. return a == b and 'BACA' not in s - возвращается результат проверки двух условий: a равно b и строка 'BACA' не содержится в переменной s.
  4. return F(a+2, b, s+'A') + F(a+3, b, s+'B') + F(a*2, b, s+'C') - возвращается сумма трех рекурсивных вызовов функции F. В каждом вызове значение a увеличивается на 2, 3 или удваивается, а строка s дополняется символом 'A', 'B' или 'C' соответственно.
  5. print(F(2, 40, '')) - вызов функции F со значениями аргументов 2, 40 и пустой строки. Результат выводится на экран.

Ответ: 27609

Читайте нас в телеграмме:

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy