Шешімі: Максимальное число по алгоритму
Ниже на пяти языках программирования записан алгоритм. Получив на вход число $x$, этот алгоритм печатает два числа: $L$ и $M$. Укажите наибольшее число $x$, при вводе которого алгоритм печатает сначала 3, а потом 6.
1x = int(input()) 2L = 0 3M = 0 4while x > 0: 5 M = M + 1 6 if x % 2 != 0: 7 L = L + 1 8 x = x // 2 9print(L) 10print(M)
Шешімін қадамдап көрсету
3 қадамНа каждой итерации число $x$ заменяется на результат целочисленного деления на 2. Поэтому $M$ равно количеству разрядов двоичной записи исходного числа.
$$M=6$$Увеличение $L$ происходит тогда и только тогда, когда очередной остаток от деления на 2 равен 1. Значит, $L$ равно количеству единиц в двоичной записи числа.
$$L=3$$Искомое число должно иметь шесть двоичных разрядов и ровно три единицы. Наибольшее такое число получается, если единицы стоят в старших разрядах.
$$111000_2=32+16+8=56$$Где здесь ошибаются
Путать $M$ с количеством единиц в двоичной жазбалар.
Выбирать число с пятью или более двоичными разрядами.
Расположить три единицы не в старших разрядах и получить не最大альное число.