На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются ещё несколько разрядов по следующему правилу:
а) если N нечётное, то к нему справа приписывается единица, а слева ноль;
б) если N чётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи;
Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
Укажите такое число N, для которого число R является наименьшим среди чисел, превышающих 250. В ответе это число запишите в десятичной системе счисления
mn = 10**10
a = 0
for n in range(1, 1000):
b = bin(n)[2:]
if n % 2 != 0:
b = ’0’ + b + ’1’
else:
b += bin(b.count(’1’))[2:]
if int(b, 2) > 250 and int(b, 2) < mn:
mn = int(b, 2)
a = n
print(a)
Ответ: 125