Алгоритм вычисления значения функций F(n) и G(n), где n — целое число, задан следующими соотношениями:
F(n) = F(n – 4) + 4620, если n ≥ 20;
F(n) = 8 × (G(n – 12) – 21), если n < 20;
G(n) = n/4 + 18, если n ≥ 384 242;
G(n) = 12 + G(n + 41), если n < 384 242.
Чему равно значение функции F(913)?
Приведём решение на языке Python.
from functools import *
def f(n):
if n >= 20:
return f(n-4) + 4620
else:
return 8*(g(n - 12) - 21)
@lru_cache()
def g(n):
if n >= 384242:
return n/4 + 18
else:
return 12 + g(n + 41)
for n in range(400000,1,-1):
g(n)
print(f(913))
Ответ: 2703082.
Приведём решение Юрия Красильникова на языке Python.
f,g={},{}
for n in range(400000,-1,-1):
g[n] = n/4+18 if n >= 384242 else 12+g[n+41]
for n in range(12,1000):
f[n] = f[n-4]+4620 if n >= 20 else 8*(g[n-12]-21)
print(f[913])

