На вход алгоритма подаётся натуральное число Алгоритм строит по нему новое число R следующим образом.
1. Строится восьмеричная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
— если число N делится на 7, то к восьмеричной записи числа справа дописываются его последние две цифры;
— если число N не делится на 7, то остаток от деления числа N на 7 умножается на семь, а затем полученный результат в восьмеричном виде приписывается слева к восьмеричной записи.
Полученная таким образом запись является восьмеричной записью искомого числа R.
Например, для исходного числа 2110 = 258 результатом является число 25258 = 136510, для исходного числа 2210 = 268 результатом является число 7268 = 47010.
Укажите такое число N, для которого число R является наименьшим среди чисел, превышающих 500. В ответе это число запишите в десятичной системе счисления.
В ответе запишите это число в десятичной системе счисления.
Приведём решение на языке Python.
otv = c = 10**10
for n in range(20,2000):
s = oct(n)[2:]
if n%7==0:
s = s + s[-2:]
else:
s = oct((n%7)*7)[2:] + s
r = int(s,8)
if r > 500 and c > r:
otv = n
c = r
print(otv)
Приведём другое решение на языке Python.
f = lambda n: oct(7*v)[2:] + oct(n)[2:] if (v:=n%7) else (t:=oct(n)[2:]) + t[-2:]
spi = sorted([(v, n) for n in range(21, 2000) if (v:=int(f(n), 8)) > 500])
print(spi[0][1])
Ответ: 57.

