Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 5. Информатика. ЕГЭ. Поляков-6213
- Просмотры: 557
- Изменено: 5 апреля 2025
(А. Богданов) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом:
- Строится двоичная запись числа \(N.\)
- К этой записи дописываются еще несколько разрядов по следующему правилу:
- а) если \(N\) четное, то к нему справа приписываются два нуля, а слева единица;
- б) если \(N\) нечетное, то к нему справа приписывается в двоичном виде сумма цифр его двоичной записи;
- Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа \(N\)) является двоичной записью искомого числа \(R.\)
Например, исходное число \(4_{10}=100_2\) преобразуется в число \(11000_2 = 48_{10},\) а исходное число \(13_{10} = 1101_2\) преобразуется в число \(110111_2 = 55_{10}.\) Укажите такое число \(N\) большее \(8,\) для которого число \(R\) является наименьшим среди чисел, превышающих \(88.\) В ответе это число запишите в десятичной системе счисления.
Решение:
Python
def R(N):
bn = f'{N:b}'
bn = bn + f'{bn.count("1"):b}' if N & 1 else '1' + bn + '00'
return int(bn, 2)
#print(R(4), R(13))
min_R = 10**10
ans = 0
for N in range(9, 88):
if 88 < R(N) < min_R:
min_R = R(N)
ans = N
print(ans)
Ответ: \(25\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


