Задание 5. Информатика. ЕГЭ. Поляков-7055
- Просмотры: 1363
- Изменено: 1 февраля 2025
(PRO100-ЕГЭ) На вход алгоритма подаётся натуральное число \(N.\) Алгоритм строит по нему новое число \(R\) следующим образом.
- Строится троичная запись числа \(N.\)
- К этой записи дописываются справа ещё несколько разрядов по следующему правилу:
- если \(N\) чётное, то к нему справа приписываются два нуля, а слева единица;
- если \(N\) нечётное, то к нему справа приписывается в троичном виде сумма цифр его троичной записи.
Полученная таким образом запись (в ней как минимум на один разряд больше, чем в записи исходного числа \(N\)) является троичной записью искомого числа \(R.\)
Например, исходное число \(4_{10} = 11_3\) преобразуется в число \(11100_3 = 117_{10}\), а исходное число \(7_{10} = 21_3\) преобразуется в число \(2110_3 = 66_{10}\).
Укажите такое наименьшее число \(N,\) для которого число \(R\) больше числа \(168.\) В ответе запишите это число в десятичной системе счисления.
Решение:
Python
def conv(N):
ans = ''
while N:
ans = str(N % 3) + ans
N //= 3
return ans
def R(N):
tr = conv(N)
if N % 2 == 0:
tr = '1' + tr + '00'
else:
tr += conv(sum(int(x) for x in tr))
return int(tr, 3)
for N in range(3, 100):
if R(N) > 168:
print(N)
break
Ответ: \(10\)