Задание 5. Информатика. ЕГЭ. Поляков-6622
- Просмотры: 39
- Изменено: 3 марта 2025
(Е. Джобс) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом:
- Строится двоичная запись числа \(N.\)
- К этой записи дописываются разряды по следующему правилу. Если число кратно \(3,\) то справа дописывается \(010,\) иначе справа дописывается двоичная запись результата умножения \(5\) на остаток от деления числа \(N\) на \(3.\)
- Полученная таким образом запись является двоичной записью искомого числа \(R.\)
Например, для числа \(13 = 1101_2\) получается \(1101101_2 = 109,\) для числа \(9\) двоичная запись \(1001_2\) преобразуется в \(1001010_2 = 74.\) Укажите значение \(N,\) в результате обработки которого будет получено минимально возможное четное значение \(R,\) большее \(300.\) Если таких значений несколько, приведите минимальное подходящее значение.
Решение:
Python
def R(N):
bn = f'{N:b}'
bn += '010' if N % 3 == 0 else f'{N % 3 * 5:b}'
return int(bn, 2)
Nmin = 0
Rmin = float('inf')
for N in range(1, 300):
r = R(N)
if r > 300 and r % 2 == 0 and r < Rmin:
Rmin = r
Nmin = N
print(Nmin)
Ответ: \(39\)