Исходное число: 32
Целевое число: 11
Допустимое количество команд: не более 5
Команды:
Алгоритм:
Полученный алгоритм: 11222
Проверим количество команд: 5 команд. Условие выполнено.
Альтернативный вариант:
Рассмотрим еще один вариант, чтобы убедиться в корректности первого:
Похоже, первый найденный алгоритм является одним из возможных.
Проверим еще раз:
Алгоритм: 11222
Другой вариант, также укладывающийся в 5 команд:
Попробуем уйти от деления в конце:
Этот алгоритм 11222 использует 5 команд. По условию, можно записать любой из них.
Еще один вариант:
Еще один вариант:
Попробуем другой порядок команд:
Данный алгоритм 11222 является валидным.
Проверим другой вариант, который даст 11:
Попробуем получить число больше 11, а затем уменьшить:
Рассмотрим пример из условия: 40 -> 6. Алгоритм: 11221
40 / 2 = 20 (1)
20 / 2 = 10 (1)
10 + 1 = 11 (2)
11 + 1 = 12 (2)
12 / 2 = 6 (1)
У нас получается 32 -> 11. Алгоритм 11222:
Длина: 5 команд.
Проверим вариант 21112:
Проверим вариант 12112:
Попробуем такой вариант: 11212
Попробуем такой вариант: 12211
Алгоритм 11222 является одним из самых простых и корректных.
Попробуем получить 11 другими путями:
32 -> 16 (1) -> 8 (1) -> 9 (2) -> 10 (2) -> 11 (2) - 11222 (5 команд)
32 -> 16 (1) -> 17 (2) -> 8.5 (не подходит)
32 -> 17 (2) -> 18 (2) -> 9 (1) -> 10 (2) -> 11 (2) - 22122 (5 команд)
Проверим 22122:
Алгоритм 11222 является рабочим. Условие задачи выполнено.
Пример из задания: 40 -> 6, алгоритм 11221
40/2 = 20 (1)
20/2 = 10 (1)
10+1 = 11 (2)
11+1 = 12 (2)
12/2 = 6 (1)
Длина 5 команд.
Вернемся к задаче: 32 -> 11, не более 5 команд.
Алгоритм 11222:
Это 5 команд.
Может быть, есть более короткий алгоритм?
32 / 2 = 16 (1)
16 / 2 = 8 (1)
8 / 2 = 4 (1)
4 + 1 = 5 (2)
5 + 1 = 6 (2)
6 + 1 = 7 (2)
7 + 1 = 8 (2)
8 + 1 = 9 (2)
9 + 1 = 10 (2)
10 + 1 = 11 (2)
Это 11122222222, очень длинно.
Другой путь:
32 -> 33 (2) -> 16.5 (не подходит)
32 -> 16 (1) -> 17 (2) -> 18 (2) -> 9 (1) -> 10 (2) -> 11 (2) - 122122 (6 команд - слишком много)
32 -> 16 (1) -> 8 (1) -> 7 (2) -> 6 (2) -> 5 (2) -> 4 (2) -> 3 (2) -> 2 (2) -> 1 (2) - 11122222222 (11 команд)
32 -> 16 (1) -> 8 (1) -> 4 (1) -> 5 (2) -> 10 (2) -> 11 (2) - 111222 (6 команд)
32 -> 16 (1) -> 8 (1) -> 4 (1) -> 2 (1) -> 3 (2) -> 4 (2) -> 5 (2) -> 6 (2) -> 7 (2) -> 8 (2) -> 9 (2) -> 10 (2) -> 11 (2) - 111112... (очень длинно)
Рассмотрим команду 2 (прибавь 1) и команду 1 (раздели на 2).
Чтобы получить 11, нам нужно или иметь 22, а потом разделить на 2, или иметь 10, а потом прибавить 1.
Если мы хотим прибавить 1 в конце, то перед этим нужно получить 10.
Как получить 10 из 32 за 4 команды?
32 -> 16 (1) -> 8 (1) -> 9 (2) -> 10 (2) - 1122. Это 4 команды.
Тогда 1122 + 1 (команда 2) = 11222.
Это 5 команд. Подходит.
Если мы хотим получить 22, а потом разделить на 2:
Как получить 22 из 32 за 4 команды?
32 -> 16 (1) -> 17 (2) -> 18 (2) -> 19 (2) - не 22
32 -> 16 (1) -> 8 (1) -> 9 (2) -> 10 (2) -> 11 (2)
32 -> 16 (1) -> 17 (2) -> 18 (2) -> 19 (2)
32 -> 17 (2) -> 18 (2) -> 9 (1) -> 10 (2)
32 -> 17 (2) -> 18 (2) -> 19 (2)
32 -> 17 (2) -> 34 (2) -> 17 (1) -> 18 (2)
32 -> 16 (1) -> 17 (2) -> 8.5 (не подходит)
32 -> 16 (1) -> 8 (1) -> 4 (1) -> 5 (2) -> 10 (2)
32 -> 16 (1) -> 17 (2) -> 18 (2) -> 9 (1) -> 10 (2)
32 -> 16 (1) -> 8 (1) -> 9 (2) -> 10 (2) -> 11 (2) - 11222
32 -> 16 (1) -> 17 (2) -> 18 (2) -> 19 (2) - не 11
32 -> 17 (2) -> 18 (2) -> 9 (1) -> 10 (2) - не 11
32 -> 17 (2) -> 34 (2) -> 17 (1) - не 11
32 -> 33 (2) -> 16.5 (не подходит)
32 -> 33 (2) -> 34 (2) -> 17 (1) -> 18 (2)
32 -> 33 (2) -> 34 (2) -> 35 (2) -> 17.5 (не подходит)
32 -> 33 (2) -> 34 (2) -> 35 (2) -> 36 (2)
32 -> 33 (2) -> 34 (2) -> 35 (2) -> 36 (2) -> 18 (1)
32 -> 33 (2) -> 34 (2) -> 35 (2) -> 36 (2) -> 18 (1) -> 19 (2)
32 -> 33 (2) -> 34 (2) -> 35 (2) -> 36 (2) -> 18 (1) -> 19 (2) -> 20 (2) -> 10 (1) -> 11 (2)
Это 2222122122 - очень длинно.
Таким образом, алгоритм 11222 является наиболее оптимальным и укладывается в 5 команд.