Решение: Максимальное число после обработки
На вход алгоритма подаётся натуральное число $N$. Алгоритм строит по нему новое число $R$ следующим образом. Строится двоичная запись числа $N$. Если число $N$ делится на 3, то к этой записи дописываются три последние двоичные цифры. Если число $N$ на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа. Полученная таким образом запись является двоичной записью числа $R$. Результат переводится в десятичную систему. Например, для исходного числа $12 = 1100_2$ результатом является число $1100100_2 = 100$, а для исходного числа $4 = 100_2$ результатом является число $10011_2 = 19$. Укажите максимальное число $N$, после обработки которого получается число $R$, меньшее чем 100.
Решение по шагам
5 шаговЕсли $N$ делится на 3, к двоичной записи дописываются три цифры, поэтому значение увеличивается в 8 раз и затем прибавляется число, заданное последними тремя цифрами.
Если $N \bmod 3 = 1$, дописывается двоичная запись числа 3, то есть $11_2$. Поэтому $R=4N+3$.
Если $N \bmod 3 = 2$, дописывается двоичная запись числа 6, то есть $110_2$. Поэтому $R=8N+6$.
Проверяем наибольшие значения $N$, для которых результат может быть меньше 100. Для $N=22$ имеем $22 \bmod 3=1$, поэтому $R=4\cdot22+3=91<100$.
Следующее число $N=23$ даёт остаток 2: $R=8\cdot23+6=190>100$. Значит, число 22 является максимальным.
Где здесь ошибаются
Не учитывать, что длина дописываемой двоичной записи зависит от остатка.
Приписывать число 3 или 6 как десятичные цифры, а не как двоичную запись.
Проверять только значения, кратные 3.