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

0 голосов
93 просмотров

Исполнитель вычислитель умеет исполнять только две команды:умножать на 2 и прибавлять 1. Составьте для вычислителя наиболее короткую программу получение из числа 1 чисел :5, 50 ,99 .


Информатика (20 баллов) | 93 просмотров
Дан 1 ответ
0 голосов

{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

(8.5k баллов)