16 номер. Рекурсия
Разность значений рекурсивной функции
(М. Шагитов) Определите значение функции F(n) для натурального числа n согласно следующему алгоритму:
F(n) = { n^2, если n < 2025 ; 2 · F(n - 1) - F(n - 2) + n, если 2025 ≤ n < 2050 ; F(n - 1) + 2 · F(n - 2) + 3 · F(n - 3), если 2050 ≤ n ≤ 2100 ; 2 · F(n - 1) + F(n - 2) + n, если n > 2100 }
Найдите последние семь цифр суммы F(2020) + F(2200).
Подсказка
Начните с базового случая и направления изменения аргумента. Для выражения из нескольких значений сначала проверьте, можно ли сократить общую часть.
Решение
Искомая величина: Найдите последние семь цифр суммы F(2020) + F(2200).
Выпишите базовые значения и границы каждой ветви. Для конкретного аргумента сначала выберите применимое условие, затем подставляйте рекуррентную формулу этой ветви; базовый случай имеет приоритет перед дальнейшим раскрытием.
Если переходы используют меньшие аргументы, заполняйте значения по возрастанию от базовой области. При повторных обращениях используйте сохранённый результат: это позволяет избежать многократного обхода одних и тех же ветвей рекурсии.
В разности значений раскройте функцию с более дальним аргументом до второй функции. Общая часть может сократиться; оставшиеся приращения нужно сложить с учётом шага и включённых границ.
Если нужны последние k цифр, итог берётся по модулю 10ᵏ. Для рекурсии только со сложением, вычитанием и умножением остаток можно сохранять на каждом шаге. При делении такой перенос модуля без дополнительного обоснования неверен. При требовании ровно k цифр сохраните ведущие нули.
После получения нужных значений подставьте их именно в выражение из вопроса, сохранив коэффициенты, знаки и скобки. Значение одной функции может быть лишь промежуточной величиной, а не окончательным ответом.
Ответ: 5098903.