Задание EGEINFB93319: Подсчёт программ исполнителя

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Подсчёт программ исполнителя.

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

Впишите правильный ответ.

Исполнитель преобразует число на экране.

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

A. Вычти 2

B. Найди целую часть от деления на 2

Программа для исполнителя – это последовательность команд.

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

Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.



i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.1 Формализация понятия алгоритма. Машина Тьюринга как универсальная модель вычислений
3.2 Оценка сложности вычислений. Время работы и объём используемой памяти, их зависимость от размера исходных данных. Оценка асимптотической сложности алгоритмов. Алгоритмы полиномиальной сложности. Переборные алгоритмы. Примеры различных алгоритмов решения одной задачи, которые имеют различную сложность
3.3 Определение возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов. Определение исходных данных, при которых алгоритм может дать требуемый результат
Тип ответа:Краткий ответ
Номер: B93319
НЕ РЕШЕНО Ответить

Решение задания EGEINFB93319

Ответ: 39

Начало: 30. Цель: 1.
Команды: A — n − 2; B — ⌊n2⌋.
Обязательные числа: 12.
Запрещённые числа: нет.
Скобки ⌊ ⌋ означают целую часть: остаток от деления отбрасывается.

На рассматриваемом промежутке каждая разрешённая команда строго изменяет число: оно убывает. Поэтому возвращений и циклов нет. Если выйти за конечную границу в направлении движения, вернуться к цели уже нельзя. Обязательные числа посещаются в единственном порядке: 30 → 12 → 1. Разобьём путь в этих точках. Любую программу первого этапа можно соединить с любой программой следующего; разбиение единственно. Поэтому количества программ на этапах перемножаются.

На каждом этапе считаем число программ из его начального числа в n. Для первого этапа обозначим его F(n), для следующих используем G(n) и H(n), если они нужны. В начальной точке значение равно 1: это пустая программа. Для недостижимого числа, нецелого аргумента и числа вне промежутка этапа значение равно 0. В запрещённой точке также ставим 0: продолжать путь через неё нельзя.
Любая непустая программа заканчивается одной из разрешённых команд. Складываем количества программ для всех её допустимых предшественников. Если разные команды ведут из одного числа в одно и то же число, это разные программы: соответствующее слагаемое учитывается повторно.
Для остальных точек общая формула имеет вид:
F(n) = F(n + 2) + F(2n) + F(2n + 1).
Целая часть деления на 2 равна n для исходных чисел 2n, 2n + 1. Учитываем каждый из этих прообразов. Нулевые слагаемые из-за выхода за промежуток ниже опускаем. Для G и H действует та же формула со своей начальной точкой.

Этап 1: 30 → 12.
F(30) = 1.
F(29) = 0.
F(28) = F(30) = 1.
F(27) = F(29) = 0.
F(26) = F(28) = 1.
F(25) = F(27) = 0.
F(24) = F(26) = 1.
F(23) = F(25) = 0.
F(22) = F(24) = 1.
F(21) = F(23) = 0.
F(20) = F(22) = 1.
F(19) = F(21) = 0.
F(18) = F(20) = 1.
F(17) = F(19) = 0.
F(16) = F(18) = 1.
F(15) = F(30) + F(17) = 1 + 0 = 1.
F(14) = F(29) + F(28) + F(16) = 0 + 1 + 1 = 2.
F(13) = F(27) + F(26) + F(15) = 0 + 1 + 1 = 2.
F(12) = F(25) + F(24) + F(14) = 0 + 1 + 2 = 3.

Этап 2: 12 → 1.
G(12) = 1.
G(11) = 0.
G(10) = G(12) = 1.
G(9) = G(11) = 0.
G(8) = G(10) = 1.
G(7) = G(9) = 0.
G(6) = G(12) + G(8) = 1 + 1 = 2.
G(5) = G(11) + G(10) + G(7) = 0 + 1 + 0 = 1.
G(4) = G(9) + G(8) + G(6) = 0 + 1 + 2 = 3.
G(3) = G(7) + G(6) + G(5) = 0 + 2 + 1 = 3.
G(2) = G(5) + G(4) + G(4) = 1 + 3 + 3 = 7.
G(1) = G(3) + G(3) + G(2) = 3 + 3 + 7 = 13.

Перемножим результаты этапов: 3 · 13 = 39.
Всего программ: 39.

Проверка. Независимый перебор последовательностей команд начинается с исходного числа и пробует каждую разрешённую команду отдельной ветвью. Ветка прекращается при попадании в запрещённое число или при выходе за цель. При достижении цели учитываем её только после посещения всех обязательных чисел. Такой перебор даёт 39 программ — столько же, сколько поэтапный подсчёт. Запрещённые значения учтены на каждом этапе; при соединении этапов обязательные числа не пропускаются. Нужное количество записываем одним целым числом.

Ответ: 39.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFB93319.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.