Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется та цифра, которая встречается реже.
3. Шаг 2 повторяется ещё два раза
4. Результат переводится в десятичную систему.
Пример. Дано число N = 19. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 10011.
2. В полученной записи нулей меньше, чем единиц, в конец записи
3. В текущей записи нулей и единиц поровну, в конец записывается последняя цифра,
4. Результат работы алгоритма R = 153.
При каком наименьшем числе N > 104 в результате работы алгоритма получится число,
Заметим, что чтобы число было кратно четырём, его двоичная запись должна оканчиваться
Число на выходе должно превышать 10410 = 11010002. Рассмотрим числа N, большие или
10510 = 11010012, результатом работы алгоритма будет число 11010010012, что не кратно 4;
10610 = 11010102, результатом работы алгоритма будет число 11010100012, что не кратно 4.
10710 = 11010112, результатом работы алгоритма будет число 11010110002, что кратно 4.
Таким образом, ответ — 107.
Ответ: 107.
Приведём другое решение на языке Python.
for n in range(105, 1000):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
for i in range(3):
if s.count("1") == s.count("0"):
s += s[-1]
elif s.count("1") > s.count("0"):
s += "0"
else:
s += "1"
r = int(s, 2) # перевод в десятичную систему
if r % 4 == 0:
print(n)
break

