ex exxam.ru
Задания23 из 27
01 Графы: схема дорог и таблица расстояний 02 Логика: фрагмент таблицы истинности, порядок столбцов 03 Базы данных: поиск информации в связанных таблицах 04 Кодирование: условие Фано и двоичное дерево кода 05 Двоичная запись числа: алгоритм строит новое число 06 Исполнитель Черепаха: движение и подсчёт точек 07 Информационный объём: звук и изображения 08 Подсчёт слов: лексикографический список и перебор 09 Электронные таблицы: подсчёт строк по условию 10 Текстовый документ: поиск сочетаний букв по условию 11 Объём данных: мощность алфавита и кодирование 12 Исполнитель МТ (машина на ленте): чтение программы 13 IP-адреса и маски сетей TCP/IP 14 Арифметические выражения и системы счисления 15 Логика: истинность выражения с отрезками и предикатами 16 Рекурсивные функции: чтение и счёт по формулам 17 Обработка целочисленной информации: поиск пар в файле 18 Динамическое программирование: Робот-сборщик монет 19 Игры: выигрышная стратегия первым ходом (куча) 20 Игры: победа Пети своим вторым ходом (куча) 21 Игры: победа Вани первым или вторым ходом (куча) 22 Многопоточные вычисления: максимальное число одновременных процессов 23 Динамика: количество программ исполнителя текущее24 Обработка символьных строк: поиск подстроки по условию 25 Перебор чисел: делители и сумма M 26 Задание 26 нужны файлы27 Задание 27 нужны файлы
23
1 балл демоверсия ЕГЭ-2026 сборник

Динамика: количество программ исполнителя

Задание 23 · Билет 2 · ЕГЭ по информатике

Билет 1 — демоверсия ЕГЭ-2026; остальные билеты — задания в формате экзамена (открытый сборник или тренировочные по образцу). Это тренировочные материалы, а не официальные КИМ. Ответы пересчитаны и сверены.

Условие

Исполнитель Увеличитель преобразует число на экране. У исполнителя есть две команды: «Прибавить 2» и «Прибавить 10». Программа — последовательность команд.

Вопрос. Сколько существует программ, которые число 7 преобразуют в число 71?

Попробуйте программой

Необязательно, но удобно: напишите здесь свой код на Python, который найдёт ответ. Если не получится — откройте решение и вставьте готовую программу одной кнопкой.

Решите программой на Python

в браузере

Напишите свой код, который найдёт ответ, и нажмите «Выполнить». Горячая клавиша запуска: Ctrl/⌘ + Enter.

Результат
Здесь появится вывод print().
Не знаешь, как решать?

Потренируйся считать программы: тренажёр соберёт нового исполнителя с командами и ограничениями, а вы посчитаете ответ программой на Python.

Открыть тренажёр

Решение

Решение

открыто шагов: 4 из 4
1 Шаг 1
Подход. Обе команды увеличивают число, поэтому считаем динамикой от цели вниз: — число программ из в 71, , при этом .
2 Шаг 2
Обе команды увеличивают число, поэтому считаем от 71 вниз: — число программ из в 71.
3 Шаг 3
; для : ; при программ нет (0).
4 Шаг 4
Вычисляем .

Способ 1 · рекурсия с запоминанием

# f(x) — число программ, переводящих x в 71.
from functools import lru_cache

@lru_cache(None)     # запоминаем уже посчитанные значения
def f(x):
    if x == 71:                  # цель достигнута — это одна программа
        return 1
    if x > 71:                   # перескочили цель — программ нет
        return 0
    # команды: «прибавить 2» и «прибавить 10»
    return f(x + 2) + f(x + 10)

print(f(7))

Способ 2 · таблица от 7 к 71

# ways[x] — сколько программ ведут из 7 в x.
ways = [0] * 81                # с запасом: последняя команда +10
ways[7] = 1                    # из 7 в 7 ведёт одна (пустая) программа
for x in range(7, 71):         # идём от меньших чисел к большим
    ways[x + 2] += ways[x]     # команда «прибавить 2»
    ways[x + 10] += ways[x]    # команда «прибавить 10»

print(ways[71])

Правильный ответ этого билета: 4085
Проверка: динамика даёт 4085 программ. Совпадает с опубликованным ответом источника.

Теория и другие билеты

Разбор с нуля, типовые ошибки, частые вопросы и все билеты задания 23 — на странице задания.

Задание 23: теория и другие билеты Практикум