№16 · решено
одна функция, выражение
Алгоритм вычисления функции F(n), где n — целое число, задан соотношениями: F(n) = 1 при n = 1; F(n) = (n − 1) × F(n − 1), если n > 1. Чему равно значение выражения (3 × F(32028) − F(32027)) / F(32026)?
Источник: ФИПИ (Резервная 22.06.2026), № 31224
Ответвпиши то, что вывела программа
Показать разбор
- Перепиши функцию из условия: F(n) = 1 при n = 1, иначе (n - 1) * F(n - 1).
- Значения получаются огромные, поэтому поставь @lru_cache(100): кэш держит только последние значения и не забивает память.
- Прогрей функцию циклом снизу вверх до самого большого нужного n. Значения F(32028), F(32027) и F(32026) запомни в переменные прямо в цикле.
- Все остальные n считай в ветке else: F(n). Без неё кэш не прогреется.
- Посчитай выражение через x1, x2, x3, деление пиши через //, и напечатай результат.
from functools import lru_cache
@lru_cache(100)
def F(n):
if n == 1:
return 1
return (n - 1) * F(n - 1)
for n in range(2, 32029):
if n == 32028:
x1 = F(n)
elif n == 32027:
x2 = F(n)
elif n == 32026:
x3 = F(n)
else:
F(n)
print((3 * x1 - x2) // x3)