Алгоритм вычисления значения функций и
, где
— целое неотрицательное число, задан следующими соотношениями:
, при <img alt="n
, если
11 » class=»math» src=»/images/inform/quest/quest-3344-7.svg» width=»auto»> и остаток от деления
на 2 равен 0
, если
11 » class=»math» src=»/images/inform/quest/quest-3344-10.svg» width=»auto»> и остаток от деления
на 2 равен 1
, если <img alt="n и не делится на 3
, если <img alt="n и делится на 3
, в других случаях
Определите наибольшее значение из отрезка
, при котором сумма цифр значения
равна 33.
Примечание: знак </> в данной задаче означает целочисленное деление.
Решение программой:
def f(n):
if n > 11 and n % 2 == 0:
return g(n // 2) * 2 - f(n - 1)
if n > 11 and n % 2 == 1:
return -g(n - 1)
return n
def g(n):
if n < 12 and n % 3 != 0:
return f(n - 1) + n
elif n < 12 and n % 3 == 0:
return g(n - 1) + f(n // 3) - n
return n * n
for i in range(1000, 0, -1):
s, summa = abs(f(i)), 0
while s > 0:
summa += (s % 10)
s //= 10
if summa == 33:
print(i)
break