На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
- Строится двоичная запись числа N.
- Ивертируется последняя цифра двоичной записи числа N (0 заменяется на 1, 1 заменяется на 0)
- Все цифры полученной двоичной записи суммируются, ищется остаток от деления суммы на 2 и дописывается в конец числа (справа).
- Результат переводится в десятичную систему и выводится на экран.
Полученная таким образом запись является двоичной записью искомого числа R.
Пример. Дано число N = 15. Алгоритм работает следующим образом:
- Двоичная запись числа N: 1111.
- Последняя цифра 1 заменяется на 0: 1110
- Дописывается бит четности: 11101
- На экран выводится число 29.
Укажите число N, после обработки которого с помощью данного алгоритма получается минимальное значение R, большее 187. В ответе запишите это число в десятичной системе счисления.
x=[]
for n in range(1,1000):
nx=bin(n)[2:]
if nx[-1]==’1’: nx=nx[:-1]+’0’
else: nx=nx[:-1]+’1’
a=nx.count(’1’)
nx+=str(a%2)
r=int(nx,2)
if r>187: x.append((r,n))
x.sort()
print(x[0])
Ответ: 95