На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу: складываются все цифры двоичной записи:
а) если сумма нечетная, к числу дописывается 11,
б) если сумма четная, дописывается 00.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число R, которое превышает 114 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе счисления.
Переведем число 11410 в двоичную систему: 11410 = 111 00102. Отсюда узнаем число на входе — 111002. Следуя алгоритму, нужно проверить четность единиц. Количество единиц нечетно, следовательно, нужно добавить две единицы. Получаем число 115, оно и является ответом, так как оно больше 114 и наименьшее из возможных.
Ответ: 115.
Приведём другое решение на языке Python.
for n in range(1, 100):
summa = 0
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
for i in range(len(s)):
summa += int(s[i])
if summa % 2 != 0:
s += "11"
else:
s += "00"
r = int(s, 2) # перевод в десятичную систему
if r > 114:
print(r)
break
Приведём другое решение на языке Python.
for n in range(1,1000):
r = bin(n)[2:]
r += "11" if (r.count("1") % 2 == 1) else "00"
if (int(r,2)) > 114:
print(int(r,2))
break

