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

Тематика Информатика
Уровень 10 - 11 классы
Май15 программы команды вычисления траектория число прибавить умножить условия 29 14 25
0

Исполнитель Май15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1. Прибавить 1 2. Умножить на 2 Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Май15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 29 и при этом траектория вычислений содержит число 14 и не содержит числа 25? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.

avatar
задан 3 месяца назад

2 Ответа

0

Для решения этой задачи необходимо определить количество программ, которые приводят число 2 к числу 29, с обязательным прохождением через число 14 и без прохождения через число 25.

Мы можем разбить задачу на два этапа:

  1. Найти количество программ, которые преобразуют число 2 в число 14.
  2. Найти количество программ, которые преобразуют число 14 в число 29 без прохождения через число 25.

Шаг 1: Преобразование 2 в 14

Мы можем описать эту задачу с помощью рекуррентного подхода. Обозначим через ( f(n) ) количество способов получить число ( n ) из числа 2. Начальные условия: ( f(2) = 1 ).

Для каждого числа ( n ), количество способов получить его из числа 2 определяется как сумма количества способов получить число ( n-1 ) (последнее действие — прибавление 1) и количества способов получить число ( n/2 ) (если ( n ) четное, последнее действие — умножение на 2).

Таким образом, рекуррентное соотношение: [ f(n) = f(n-1) + (f(n/2) \text{, если } n \text{ четное}) ]

Применим это от 2 до 14:

  • ( f(2) = 1 )
  • ( f(3) = f(2) = 1 )
  • ( f(4) = f(3) + f(2) = 1 + 1 = 2 )
  • ( f(5) = f(4) = 2 )
  • ( f(6) = f(5) + f(3) = 2 + 1 = 3 )
  • ( f(7) = f(6) = 3 )
  • ( f(8) = f(7) + f(4) = 3 + 2 = 5 )
  • ( f(9) = f(8) = 5 )
  • ( f(10) = f(9) + f(5) = 5 + 2 = 7 )
  • ( f(11) = f(10) = 7 )
  • ( f(12) = f(11) + f(6) = 7 + 3 = 10 )
  • ( f(13) = f(12) = 10 )
  • ( f(14) = f(13) + f(7) = 10 + 3 = 13 )

Итак, количество программ для преобразования 2 в 14 равно 13.

Шаг 2: Преобразование 14 в 29 без 25

Используем аналогичный подход, но теперь с дополнительным условием — избегать число 25.

Обозначим через ( g(n) ) количество способов получить число ( n ) из числа 14 без прохождения через 25. Начальные условия: ( g(14) = 1 ).

Вычислим значение ( g(n) ) для чисел от 14 до 29, избегая 25:

  • ( g(15) = g(14) = 1 )
  • ( g(16) = g(15) + g(8) = 1 + 0 = 1 )
  • ( g(17) = g(16) = 1 )
  • ( g(18) = g(17) + g(9) = 1 + 0 = 1 )
  • ( g(19) = g(18) = 1 )
  • ( g(20) = g(19) + g(10) = 1 + 0 = 1 )
  • ( g(21) = g(20) = 1 )
  • ( g(22) = g(21) + g(11) = 1 + 0 = 1 )
  • ( g(23) = g(22) = 1 )
  • ( g(24) = g(23) + g(12) = 1 + 0 = 1 )
  • ( g(25) = 0 ) (исключаем число 25)
  • ( g(26) = g(25) + g(13) = 0 + 0 = 0 )
  • ( g(27) = g(26) = 0 )
  • ( g(28) = g(27) + g(14) = 0 + 1 = 1 )
  • ( g(29) = g(28) = 1 )

Итак, количество программ для преобразования 14 в 29 без прохождения через 25 равно 1.

Объединение

Общее количество программ, преобразующих 2 в 29 через 14 и не проходящих через 25, равно произведению количества программ для каждого этапа:

[ 13 \cdot 1 = 13 ]

Таким образом, существует 13 таких программ.

avatar
ответил 3 месяца назад
0

Для того чтобы найти количество программ, удовлетворяющих условиям задачи, мы можем воспользоваться методом динамического программирования. Пусть dp[i] - количество программ, для которых результатом является число i. Тогда dp[2] = 1 (так как исходное число 2), dp[14] = 0 (так как траектория вычислений не должна содержать число 25), dp[25] = 0 (так как траектория вычислений должна содержать число 14), dp[29] = dp[28] + dp[14] (так как результатом программы должно быть число 29 и траектория должна содержать число 14).

Используя данную логику, мы можем последовательно вычислить dp[i] для всех i от 2 до 29. Таким образом, мы найдем количество программ, удовлетворяющих условиям задачи.

avatar
ответил 3 месяца назад

Ваш ответ

Вопросы по теме