Задача 20
Ниже на нескольких языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее число x, при вводе которого алгоритм печатает сначала 6, а потом 7.
Проанализируем алгоритм.
Наличие в цикле операторов x mod 2 и x div 2 говорит о том, что эту задачу можно решать, представляя x в двоичной системе счисления.
В цикле есть счетчик M, который увеличивается на единицу и в конце программы будет соответствовать количеству шагов цикла. Таким образом, имеем 7 шагов цикла (в конце выводится M - по условию задания - число 7).
Условие if x mod 2 = 0 проверяет на четность младший разряд числа в двоичной системе. Если в младшем разряде стоит ноль, то переменная L увеличивается на единицу.
В строке x := x div 2; отсекается младший разряд двоичного представления значения x.
Таким образом, перемнная L - количество нулей в двоичной записи числа x.
Так как в результате выводится L = 6, то в двоичной записи числа 6 нулей.
Так как цикл работает 7 раз и каждый шаг от числа в двоичной записи отсекается один разряд, то имеем 7 разрядов (цифр) в числе.
Таким образом в двоичной записи числа x - 6 нулей и 1 единица.
Для получения наименьшего x расположим цифры следующим образом:
Ответ: 64.