Алгоритм вычисления значения функций и
, где
— целое неотрицательное число, задан следующими соотношениями:
, при
, если
на 2 равен 0
, если
на 2 равен 1
, если
и не делится на 5
, если
и делится на 5
, в других случаях
Определите наибольшее значение из отрезка
, при котором сумма цифр значения
равна 48.
Решение программой:
def f(n):
if n > 19 and n % 2 == 0:
return g(n // 2) * 3 - f(n - 2)
if n > 19 and n % 2 == 1:
return g(n - 2)
return n ** 2
def g(n):
if n < 20 and n % 5 != 0:
return 3 * n + f(n - 2)
elif n < 20 and n % 5 == 0:
return g(n - 2) + f(n // 5)
return n ** 3
for i in range(480, 0, -1):
s, summa = abs(f(i)), 0
while s > 0:
summa += (s % 10)
s //= 10
if summa == 48:
print(i)
break
Ответ: 478