Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. В конец двоичной записи добавляется двоичный код остатка от деления числа N
3. Результатом работы алгоритма становится десятичная запись полученного числа R.
Пример 1. Дано число N = 13. Алгоритм работает следующим образом.
1. Строим двоичную запись: 1310 = 11012.
2. Остаток от деления 13
3. Результат работы алгоритма R = 27.
Пример 2. Дано число N = 14. Алгоритм работает следующим образом.
1. Строим двоичную запись: 1410 = 11102.
2. Остаток от деления 14
3. Результат работы алгоритма R = 58.
Назовем доступными числа, которые могут получиться в результате работы этого алгоритма. Например,
Какое наибольшее количество доступных чисел может быть на отрезке, содержащем
Приведём решение на языке Python.
t = [0]*10000
for n in range(1,1000):
s = bin(n)[2:] + bin(n%4)[2:]
r = int(s,2)
t[r] = 1
maxi = 0
for i in range(1000):
maxi = max( maxi, sum(t[i : i + 65]))
print(maxi)
Ответ: 25.
Приведём решение Бориса Савельева на языке Python.
a = []
for n in range (1,1000):
a.append(int((bin(n)[2:]+bin(n%4)[2:]),2))
maxi = 0
for i in range (0,len(a)):
cnt = 0
s1 = a[i]
s2 = a[i]+65
for j in range (i,len(a)):
if a[j] >= s1 and a[j] < s2:
cnt+=1
maxi = max(cnt,maxi)
print(maxi)

