Алгоритм вычисления значения функции F(n), где n – целое число, задан следующими соотношениями:
F(n) = 3 при n < 10;
F(n) = (n + 4) × F(n − 5), если n > 10.
Чему равно значение выражения (F(257487) / 683 + 67 × F(257477)) / F(257472)?
В ответе запишите целую часть полученного числа.
Решение на Python:
🔹 Шаг 1. Подключение кэширования
from functools import *
@lru_cache(100)
📌 Результат: подключается декоратор lru_cache, который запоминает уже вычисленные значения функции. Это нужно, чтобы не считать одно и то же много раз — иначе программа работала бы очень медленно.
🔹 Шаг 2. Описание функции F(n)
def f(n):
if n < 10:
return 3
return (n+4) * f(n-5)
📌 Результат: функция F(n) реализует условия задачи.
если n < 10, возвращается 3
если n > 10, возвращается (n + 4) * F(n - 5)
Это
рекурсивная функция, если она обращается к себе или к другой функции.
🔹 Шаг 3. Предварительный вызов функций
for i in range(10, 257_487):
f(i)
📌 Результат: функции вызываются для значений от 10 до 257486. Все значения заранее вычисляются и сохраняются в кэше — дальнейшие обращения будут мгновенными.
🔹 Шаг 4. Вычисление числителя выражения
f(257_487) // 683 + 67 * f(257_477)
📌 Результат: вычисляется промежуточное выражение F(257_487) // 683 + 67 * F(257_477) (числитель или часть формулы). Используется // — целочисленное деление.
🔹 Шаг 5. Деление на знаменатель и вывод результата
print((f(257_487) // 683 + 67 * f(257_477)) // f(257_472))
📌 Результат: итоговое значение выражения (F(257_487) // 683 + 67 * F(257_477)) // F(257_472) выводится на экран — ответ задачи: 24994270044009.