На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописывается (дублируется) последняя цифра.
3) Затем справа дописывается 0, если в
двоичном коде числа N чётное число единиц, и 1, если нечётное.
4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным.
Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 130, которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе.
Код:
for n in range(1, 1000):
z = bin(n)[2:]
r = bin(n)[2:]
z += z[-1]
if r.count('1') % 2 == 0:
z = str(bin(n)) + '00'
else:
z = str(bin(n)) + '10'
if int(z,2) > 130:
print(int(z,2))
break
Мне выдает 132, хотя правильный ответ 141. Что не так? Подскажите, пожалуйста.