ЕГЭ · ЗАДАНИЕ 5
Алгоритмы обработки чисел · №10087
Натуральное N. Строится двоичная запись N. Если N кратно 3, справа дописывают последние три цифры записи. Иначе справа дописывают двоичную запись числа 3·(N mod 3). R — десятичное значение результата. Найдите минимальное R, большее 151. Ответ запишите в десятичной системе.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 163
Сначала постройте R для одного N по ветвям условия. В проверке используем r > 151; в список кладём r, потому что ответом требуется именно R. Затем берём минимум. В этом алгоритме R ≥ N. Найден кандидат R = 163; при N ≥ 1000 получим R ≥ 1000 > 163. Поэтому больший N не улучшит ответ; внутри диапазона проверяем все результаты, не прерываясь на первом.
def get_r(n):
s = bin(n)[2:]
if n % 3 == 0:
s += s[-3:]
else:
s += bin(3 * (n % 3))[2:]
return int(s, 2)
answers = []
for n in range(1, 1000):
r = get_r(n)
if r > 151:
answers.append(r)
print(min(answers))