OpenFIPI 2.0
FD3C06
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё несколько разрядов по следующему правилу:
а) если N чётное, то к нему справа приписываются два нуля, а слева единица;
б) если N нечётное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи.
Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, исходное число 410 = 1002 преобразуется в число 1100002 = 4810, а исходное число 1310 = 11012 преобразуется в число 1101112 = 5510.
Укажите такое наибольшее число N, для которого R не превышает 210. В ответе запишите это число в десятичной системе счисления.
РедактироватьОтветы
16
res=[] for n in range(1000): s=bin(n)[2:] if n%2==0: s='1'+s+'00' else: s=s+(bin(int(str(s.count('1'))))[2:]) r=int(s,2) if r<=210: res.append(n) print(max(res)) ответ: 49
49
27
49