Вопрос:

У исполнителя Вычислитель две команды, которым присвоены номера: 1. умножь на 4 2. вычти 1 Первая из них увеличивает число на экране в 4 раза, вторая уменьшает его на 1. Составьте алгоритм получения из числа 2 числа 120, содержащий не более 5 команд. В ответе запишите только номера команд. (Например, 11221 — это алгоритм: умножь на 4 умножь на 4 вычти 1 вычти 1 умножь на 4, который преобразует число 1 в число 56.) Если таких алгоритмов более одного, то запишите любой из них.

Ответ:

Решение:

Нам нужно получить число 120 из числа 2, используя не более 5 команд. Команды: 1. умножь на 4; 2. вычти 1.

Пробуем найти последовательность команд:

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 * 4 = 128
  4. 128 - 1 = 127
  5. 127 - 1 = 126

Этот вариант не подходит, так как получили 126, а нужно 120.

Попробуем другую последовательность:

  1. 2 * 4 = 8
  2. 8 - 1 = 7
  3. 7 * 4 = 28
  4. 28 * 4 = 112
  5. 112 + 1 (не можем использовать, только вычитание)

Попробуем такой вариант:

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 * 4 = 128
  4. 128 - 4 (не можем использовать, только вычитание 1)

Давайте подумаем, как из 128 получить 120, используя только вычитание 1. Нужно вычесть 8 раз.

Попробуем начать с вычитания:

  1. 2 - 1 = 1
  2. 1 * 4 = 4
  3. 4 * 4 = 16
  4. 16 * 4 = 64
  5. 64 * 4 = 256 (слишком много)

Вернемся к варианту, где получили 128. Нам нужно получить 120. От 128 нужно отнять 8. Если мы используем команду «вычти 1», то нам понадобится 8 таких команд. Но у нас всего 5 команд. Значит, мы должны достичь числа, из которого можно вычесть 1, чтобы получить 120.

Рассмотрим вариант, где мы получаем число близкое к 120. Нам нужно 120.

Если мы хотим получить 120, и последняя команда — вычитание 1, то предыдущее число должно быть 121. Как из 2 получить 121 за 4 команды?

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 * 4 = 128
  4. 128 - 1 = 127 (не 121)

Если последняя команда — умножение на 4, то предыдущее число должно быть 30 (120 / 4). Как из 2 получить 30 за 4 команды?

  1. 2 * 4 = 8
  2. 8 + ? (нельзя)
  3. 2 * 4 = 8
  4. 8 * 4 = 32
  5. 32 - 1 = 31 (не 30)

Попробуем так: 2 -> 8 -> 32 -> 128. Теперь нам нужно получить 120. Нам нужно вычесть 8. Если мы используем только команду «вычти 1», то это 8 команд. Значит, мы не можем получить 120, если последняя команда — вычитание.

Давайте посмотрим на пример: 1 -> 4 -> 16 -> 64 -> 256. Это 4 команды. А нам нужно 5.

Попробуем получить 120 из 2:

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 * 4 = 128
  4. 128 - 4 (нельзя)

Рассмотрим другой подход. Если последнее действие — умножение на 4, то предыдущее число должно быть 30. Как из 2 получить 30 за 4 действия?

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 - 1 = 31 (не 30)

Если последнее действие — вычитание 1, то предыдущее число должно быть 121. Как из 2 получить 121 за 4 действия?

  1. 2 * 4 = 8
  2. 8 * 4 = 32
  3. 32 * 4 = 128
  4. 128 - 1 = 127 (не 121)

Попробуем получить 120, используя 5 команд. Команды: 1 — умножить на 4, 2 — вычесть 1.

Начнем с 2.

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 \( \times 4 = 128 \)
  4. 128 - 1 = 127
  5. 127 - 1 = 126 (не подходит)

Попробуем другую последовательность:

  1. 2 \( \times 4 = 8 \)
  2. 8 - 1 = 7
  3. 7 \( \times 4 = 28 \)
  4. 28 \( \times 4 = 112 \)
  5. 112 + 1 (нельзя)

Чтобы получить 120, нам нужно достичь числа, из которого можно получить 120. Если последнее действие — умножение на 4, то предыдущее должно быть 30. Как получить 30 из 2 за 4 команды?

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 - 1 = 31 (близко, но не 30)

Если последнее действие — вычитание 1, то предыдущее число должно быть 121. Как из 2 получить 121 за 4 команды?

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 \( \times 4 = 128 \)
  4. 128 - 1 = 127 (близко, но не 121)

Попробуем другой подход. Нам нужно получить 120. Если мы используем 3 раза команду «умножить на 4», мы получаем 128 (2 * 4 * 4 * 4 = 128). Остается 2 команды. Мы можем вычесть 1 два раза: 128 - 1 - 1 = 126. Это слишком много.

Если мы используем 2 раза команду «умножить на 4», мы получаем 32 (2 * 4 * 4 = 32). Остается 3 команды. Нужно получить 120 из 32 за 3 команды.

32 * 4 = 128. Остается 2 команды. 128 - 1 - 1 = 126. (не 120)

32 - 1 = 31. Остается 2 команды. 31 * 4 = 124. Остается 1 команда. 124 - 1 = 123. (не 120)

Попробуем другой подход. Нам нужно получить 120. Команды: 1 (умножить на 4), 2 (вычесть 1). Максимум 5 команд.

Давайте составим алгоритм:

  1. 2 \( \times 4 = 8 \) (Команда 1)
  2. 8 \( \times 4 = 32 \) (Команда 1)
  3. 32 \( \times 4 = 128 \) (Команда 1)
  4. 128 - 1 = 127 (Команда 2)
  5. 127 - 1 = 126 (Команда 2)

Это 5 команд, но результат 126.

Попробуем получить 120:

  1. 2 \( \times 4 = 8 \) (Команда 1)
  2. 8 \( \times 4 = 32 \) (Команда 1)
  3. 32 - 1 = 31 (Команда 2)
  4. 31 \( \times 4 = 124 \) (Команда 1)
  5. 124 - 1 = 123 (Команда 2)

Это 5 команд, но результат 123.

Попробуем еще раз:

  1. 2 \( \times 4 = 8 \) (Команда 1)
  2. 8 - 1 = 7 (Команда 2)
  3. 7 \( \times 4 = 28 \) (Команда 1)
  4. 28 \( \times 4 = 112 \) (Команда 1)
  5. 112 + 1 (нельзя)

Если последняя команда — вычитание 1, то предыдущее число должно быть 121. Как получить 121 из 2 за 4 команды?

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 \( \times 4 = 128 \)
  4. 128 - 1 = 127 (слишком много)

Используем 5 команд. Нам нужно получить 120. Возможный алгоритм:

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 \( \times 4 = 128 \)
  4. 128 - 4 (нет)

Рассмотрим: 11122. Это 5 команд.

2 \( \times 4 = 8 \)

8 \( \times 4 = 32 \)

32 \( \times 4 = 128 \)

128 - 1 = 127

127 - 1 = 126

Попробуем получить 120.

Если последняя команда — умножение на 4, то предыдущее число должно быть 30. Как получить 30 из 2 за 4 команды?

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 - 1 = 31
  4. 31 - 1 = 30

Это 4 команды, а нам нужно 5. Значит, последняя команда — умножить на 4, а перед ней — 30. Получение 30 за 4 команды:

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 - 1 = 31
  4. 31 - 1 = 30

Итак, алгоритм: 1122. Это 4 команды. Но нам нужно 5 команд, чтобы получить 120.

Давайте попробуем получить 30 за 4 команды, чтобы потом умножить на 4.

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 - 1 = 31
  4. 31 - 1 = 30

Тогда алгоритм 11221. Это 5 команд. 2 -> 8 -> 32 -> 31 -> 30 -> 120. Это подходит!

Проверим:

  1. 2 \( \times 4 = 8 \)
  2. 8 \( \times 4 = 32 \)
  3. 32 - 1 = 31
  4. 31 - 1 = 30
  5. 30 \( \times 4 = 120 \)

Команды: 1, 1, 2, 2, 1.

Ответ: 11221