Алгоритм вычисления значения функции 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 – задание №16
Решение:
Решение —
Для решения задачи можно использовать рекурсивную функцию с кэшированием:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from functools import * @lru_cache(None) def f(n): if n == 1: return 1 if n > 1: return (n - 1) * f(n - 1) for i in range(1, 33000): f(i) print((3 * f(32028) - f(32027)) // f(32026)) |
Разберём вычисления.
По условию:
F(n) = (n − 1) × F(n − 1)
Следовательно:
F(32028) = 32027 × F(32027)
и
F(32027) = 32026 × F(32026).
Подставим это в выражение:
(3 × F(32028) − F(32027)) / F(32026)
Получаем:
(3 × 32027 × 32026 × F(32026) − 32026 × F(32026)) / F(32026)
Сократим на F(32026):
3 × 32027 × 32026 − 32026
Вынесем 32026 за скобки:
32026 × (3 × 32027 − 1)
32026 × 96080 = 3077058080
Ответ: 3077058080