Алгоритм вычисления функций F(n) и G(n), где n — целое число, задан следующими соотношениями:
F(n) = 2 · (G(n − 3) + 8);
G(n) = 2 · n, если n < 10;
G(n) = G(n − 2) + 1, если n ≥ 10.
Чему равно значение выражения F(15 548)?
Приведём решение на языке Python.
G = {}
for n in range(10**5):
if n < 10:
G[n] = 2 * n
else:
G[n] = G[n - 2] + 1
print(2 * (G[15548 - 3] + 8))
Ответ: 15 588.
Приведём решение Александра Козлова на языке Python.
def G(n):
if n < 10:
return 2 * n
result = 0
while n >= 10:
result += 1
n -= 2
return result + 2 * n
def F(n):
return 2 * (G(n - 3) + 8)
print(F(15548))
Приведём решение Александра Козлова на языке Python.
from functools import *
@lru_cache(1000)
def g(n):
if n<10:
return 2*n
if n>=10:
return g(n-2)+1
for n in range(10,15500):
g(n)
print(2*(g(15545)+8))
Приведём решение Александра Козлова на языке Python.
def G(n):
if n < 10:
return 2 * n
k = (n - 9) // 2
m = n - 2 * k
return 2 * m + k
print(2 * (G(15548 - 3) + 8))

