16 2027-Анисимов-2
G_LIMIT = 19870
G_STEP = 9
_g = [0] * 19890
for n in range(19889, -1, -1):
if n >= G_LIMIT:
_g[n] = n / 17 + 45
else:
_g[n] = _g[n + G_STEP] - 6
📌 Результат: для G(n) при n < G_LIMIT используется ссылка вперёд G(n) = G(n + G_STEP) − …, поэтому значения заполняем массивом сверху вниз.
from functools import lru_cache
@lru_cache(None)
📌 Результат: подключается декоратор lru_cache, который запоминает уже вычисленные значения функции. Это нужно, чтобы не считать одно и то же много раз — иначе программа работала бы очень медленно.
def g(n):
return _g[n]
📌 Результат: функция G(n) реализует условия задачи.
если n >= 19870, возвращается n // 17 + 45
если n < 19870, возвращается G(n + 9) - 6
def f(n):
if n >= 24:
return f(n - 6) + 2026
return 8 * (g(n - 5) - 31)
📌 Результат: функция F(n) реализует условия задачи.
если n >= 24, возвращается F(n - 6) + 2026
если n < 24, возвращается 8 * (G(n - 5) - 31)
for i in range(24, 685):
f(i)
📌 Результат: функции вызываются для значений от 24 до 684. Все значения заранее вычисляются и сохраняются в кэше — дальнейшие обращения будут мгновенными.
print(answer)
📌 Результат: итоговое значение выражения answer выводится на экран — ответ задачи: 128415.
Алгоритм вычисления значений функций F(n) и G(n), где n — целое число, задан следующими соотношениями:
F(n) = F(n − 6) + 2026, если n ≥ 24.
F(n) = 8 × (G(n − 5) − 31), если n < 24.
G(n) = n / 17 + 45, если n ≥ 19870.
G(n) = G(n + 9) − 6, если n < 19870.
Чему равно значение F(684)?
В ответе запишите целую часть полученного числа.
Время решения
00:00.00
Нажмите «Пуск», когда начнёте решать
Пробел — пуск и пауза
Поверните телефон
Горизонтальный режим удобнее для таблицы и Python-кода