ЕГЭ · ЗАДАНИЕ 5
Алгоритмы обработки чисел · №29337
Натуральное N. Строится двоичная запись N. Если сумма её цифр чётная, справа дописывают 0 и затем заменяют два левых разряда на 10. Иначе справа дописывают 1 и заменяют два левых разряда на 11. R — десятичное значение полученной записи. Найдите максимальное N при R ≤ 19. Ответ запишите в десятичной системе.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 12
Сначала постройте R для одного N по ветвям условия. В проверке используем r <= 19; в список кладём n, потому что ответом требуется именно N. Затем берём максимум. После дописывания и замены двух старших битов длина увеличена на 1, старший бит не нулевой, поэтому R > N. При N ≥ 100 условие R ≤ 19 невозможно.
def get_r(n):
s = bin(n)[2:]
if s.count('1') % 2 == 0:
s += '0'
s = '10' + s[2:]
else:
s += '1'
s = '11' + s[2:]
return int(s, 2)
answers = []
for n in range(1, 100):
r = get_r(n)
if r <= 19:
answers.append(n)
print(max(answers))