Решение: Подсчёт единиц в двоичной записи
Ниже на пяти языках программирования записан алгоритм. Получив на вход число $x$, этот алгоритм печатает два числа: $L$ и $M$. Алгоритм последовательно делит $x$ на 2 с отбрасыванием остатка. При каждом делении $M$ увеличивается на 1, а $L$ увеличивается на 1, если остаток от деления $x$ на 2 не равен нулю. Укажите наименьшее число $x$, при вводе которого алгоритм печатает сначала 4, а потом 8.
Решение по шагам
4 шагаПри последовательном целочисленном делении положительного числа на 2 количество выполненных делений равно числу цифр в двоичной записи числа. Поэтому условие $M=8$ означает, что число должно быть восьмизначным в двоичной системе.
$$M=8$$Остаток 1 при делении на 2 соответствует единице в очередном разряде двоичной записи. Поэтому $L=4$ означает, что в двоичной записи должно быть ровно четыре единицы.
$$L=4$$Чтобы восьмизначное двоичное число с четырьмя единицами было наименьшим, первую единицу ставим в старший разряд, а три остальные — в самые младшие разряды.
$$x=10000111_2$$Переведём число в десятичную систему счисления.
$$x=2^7+2^2+2^1+2^0=128+4+2+1=135$$Где здесь ошибаются
Путают количество циклов с количеством единиц в двоичной записи.
Выбирают число с восемью единицами вместо восьмизначного двоичного числа.
Размещают дополнительные единицы не в младших, а в старших разрядах, получая не минимальное число.