Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = 1 при n = 1;
F(n) = 2 × n × F(n-1), если n > 1.
Чему равно значение выражения (F(2024)/16 – F(2023))/F(2022)?
Ответ:
ЕГЭ по информатике Основная волна 08.06.2024 kompege.ru – задание №16
Решение:
|
1 2 3 4 5 6 7 8 9 10 |
from functools import lru_cache @lru_cache(None) def f(n): if n==1: return 1 if n>1: return 2*n*f(n-1) for i in range(1, 2025): f(i) print((f(2024)//16 - f(2023))/f(2022)) |
Пояснение кода
- Импортируется декоратор
lru_cacheиз модуляfunctoolsдля кэширования результатов вычислений функцииf. - Определяется рекурсивная функция
fс использованием декоратора@lru_cache(None), который кэширует результаты для всех входных значений.- Если
nравно 1, функция возвращает 1. - Если
nбольше 1, функция возвращает2 * n * f(n - 1), рекурсивно вычисляя значение функции.
- Если
- Цикл
forиспользуется для вычисления значений функцииfдля всех значений от 1 до 2024 включительно. Это обеспечивает заполнение кэша для всех необходимых значений. - Результат вычисляется и выводится с использованием выражения
(f(2024) // 16 - f(2023)) / f(2022).
Ответ: 1019592