Задача #3235

Алгоритмы

Уровень ЕГЭ

(О. Лысенков) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится девятеричная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если девятеричная запись начинается на 7, то все шестёрки в записи меняются на тройки, а все тройки меняются на шестёрки после к числу приписывается 34 слева;

б) если девятеричная запись начинается не на 7,то к записи справа приписывается 45, а первый разряд полученной записи заменяется на 3.

Полученная таким образом запись является девятеричной записью искомого числа R.

Укажите максимальное число N, для которого результатом работы алгоритма является наибольшее число R, меньшее 2876.

В ответе это число запишите в десятичной системе счисления.''

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

79
def cc(n):
s = ''
while n != 0:
s = str(n % 9) + s
n //= 9
return s

def f(n):
s = cc(n)
if s[0] == '7':
s = s.replace('6','*').replace('3','6').replace('*','3')
s = '34' + s
else:
s += '45'
s = '3' + s[1:]
return int(s,9)

#1 способ
a = []
for i in range(1,100000):
if f(i) < 2876:
a.append([-f(i),-i])
a.sort()
print(abs(a[0][1]))
#2 способ
max_el = float('-inf')
min_N = 0
for i in range(1,100000):
if f(i) < 2876:
if max_el <= f(i):
max_el = f(i)
min_N = i
print(min_N)
Быстрый переход
Перейти к задаче