На вход алгоритма подаётся натуральное число . Алгоритм строит по нему новое число
следующим образом.
- Строится двоичная запись числа
.
- К этой записи дописывается (дублируется) последняя цифра.
- Затем справа дописывается
, если в двоичном коде числа
чётное число единиц, и
, если нечётное.
- К полученному результату справа дописывается
, если количество единиц получившегося числа нечётно, иначе дописывается
.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа ) является двоичной записью искомого числа
. Укажите минимальное число
, после обработки которого автомат получает число, большее
. В ответе это число запишите в десятичной системе.
for n in range(1, 1000):
r = bin(n)[2:]
r += r[-1]
if bin(n)[2:].count(’1’) % 2 == 0:
r += ’0’
else:
r += ’1’
if r.count(’1’) % 2 == 0:
r += ’0’
else:
r += ’1’
if int(r, 2) > 120:
print(n)
break
Ответ: 15