Задача #3231

Алгоритмы

Уровень ЕГЭ

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

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

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

а) если семеричная запись оканчивается на 2, то все тройки в записи меняются на единицы, а все единицы меняются на тройки после к числу приписывается 21 слева;

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

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

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

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

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

Ответ

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

def f(n):
s = cc(n)
if s[-1] == '2':
s = s.replace('3','*').replace('1','3').replace('*','1')
s = '21' + s
else:
s += '36'
s = '1' + s[1:]
return int(s,7)

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