Задание 16. Информатика. ЕГЭ. Поляков-7389

Просмотры: 114
Изменено: 24 ноября 2024

*(А. Минак) Алгоритм вычисления значения функции \(F(n)\), где \(n\) – натуральное число, задан следующими соотношениями:

\(F(1) = F(2) = 1\),
\(F(n) = 3 \cdot F(n - 2) + F(n - 1)\), если \(n > 2\).

Чему равно значение выражения \(F(20000024) / F(20000020)\)? Запишите в ответе только целую часть числа.

Решение:

Напишем на Python эту функцию:


def F(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, 3 * a + b
    return a

Функция \(F(n)\) растёт очень быстро. При \(n \geq 10~000\) произойдёт переполнение буфера. Однако, нам не нужны значения самой функции. Нужно лишь отношения её значений, для аргументов, отстоящих друг от друга на \(4\). Попробуем увидеть к чему стремится это отношение для небольших значений аргумента. Например, от \(300\) до \(500\).


for n in range(300, 500):
    print(F(n+4) / F(n))

Получается одно и то же число \(28.11942946412396\). Изменения будут заметны только для очень маленьких разрядов. Поэтому, целая часть предела, куда стремится это отношение, равно \(28\).

Ответ: \(28\)