Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Если число N делится
3. Если полученное на предыдущем шаге число делится
4. Результатом работы алгоритма становится десятичная запись полученного числа R.
Пример. Дано число N = 10. Алгоритм работает следующим образом:
1. Строим двоичную запись: 1010 = 10102.
2. Число 10 делится
3. Число 85 не делится
4. Результат работы алгоритма R = 171.
Определите наибольшее возможное значение N, для которого в результате работы алгоритма получается R < 1 855 663.
Приведём решение на языке Python.
for n in range(1000000,1,-1):
r = bin(n)[2:]
if n % 5 == 0:
r += bin(5)[2:]
else:
r += '1'
if int(r,2) % 7 == 0:
r += bin(7)[2:]
else:
r += '1'
if int(r,2)<1855663:
print(n)
break
Ответ: 463 913.

