На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Если N
3. Если N
Полученная таким образом запись является троичной записью искомого числа R.
Укажите максимальное число R,
Приведём решение на языке Python.
def f(n):
s=''
while n > 0:
s = str(n%3)+s
n //= 3
return s
c = set()
for n in range(1,100):
s = f(n)
if n%3 == 0:
s = s + s[-2:]
else:
s = s + f((n%3)*5)
r = int(s,3)
if r <= 173:
c.add(r)
print(max(c))
Ответ: 162.
Приведём решение Сергея Донец на PascalABC:
uses School;
begin
var mx:=-MaxInt;
var sp:=new List for var n:=1 to 173173 do begin var t:=tobase(n,3); var ost:=n mod 3 * 5; var tost:=tobase(ost,3); if n.Divs(3) then t:=t+t[^2:] else t:=t+tost; var r:=dec(t,3); if r<=173 then begin mx:=r>mx?r:mx; sp.add(mx); end;end; Println(sp.max); end.

