Исполнитель вычислитель умеет исполнять только две команды:умножать на 2 и прибав

Исполнитель вычислитель умеет исполнять только две команды:умножать на 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы