Исполнитель вычислитель умеет исполнять только две команды:умножать на 2 и прибавлять 1. Составьте для вычислителя наиболее короткую программу получение из числа 1 чисел :5, 50 ,99 .
Исполнитель вычислитель умеет исполнять только две команды:умножать на 2 и прибавлять 1. Составьте для вычислителя наиболее короткую программу получение из числа 1 чисел :5, 50 ,99 .
Ответ(ы) на вопрос:
Гость
{0 - умножить на 2; 1 - прибавить 1}
5: 001 {1 - 2 - 4 - 5}
50: 0100010 {1 - 2 - 3 - 6 - 12 - 24 - 25 - 50}
99: 010000101 {1 - 2 - 3 - 6 - 12 - 24 - 48 - 49 - 98 - 99}
В данном случае достаточно просто идти с конца. Скажем, если есть число 99, очевидно, последней командой было "прибавить 1". Далее, 98 - может быть получено умножением на 2, и следует выбирать именно эту команду - программа точно не будет превосходить по размеру вариант, где последней операцией является сложение.
Например,
98 - 49 - 48 короче, чем
98 - 97 - 96 - 48
Не нашли ответ?
Похожие вопросы