На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R, следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ешё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Какое наибольшее число, меньшее 50, может быть получено в результате работы автомата?
for number in range(1000):
binary_number = bin(number)[2:]
if binary_number.count(’1’) % 2 == 0:
binary_number += ’0’
else:
binary_number += ’1’
if binary_number.count(’1’) % 2 == 0:
binary_number += ’0’
else:
binary_number += ’1’
decimal_result = int(binary_number, 2)
if decimal_result < 50:
print(decimal_result)