Задача к ЕГЭ по информатике на тему «одна функция» №5

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

F (n) = n!  , если n ≥ 5000,

F (n) = 2⋅F (n + 1)∕(n + 1)  , если 1 ≤ n < 5000  .

Чему равно значение выражения 1000⋅F (7)∕F(4)  ?

Примечание. Факториал числа n  , который обозначается как n!  , вычисляется по формуле n! = 1⋅2 ⋅ ... ⋅n  .

Решение программой:

fact = [1]*7001
for i in range(1, 7001):
    fact[i] = fact[i-1]*i

f = [-1]*7001

for i in range(7000, 1, -1):
    if i >= 5000:
        f[i] = fact[i]
    else:
        f[i] = 2 * f[i + 1] // (i + 1)
# print(f)

print(1000*f[7]/f[4])

Решение аналитически:

Поскольку числа слишком большие, то будем решать аналитикой. Для начала вычислим значения F (4999),F(4998),F(4997) :

            F (5000) F (4999) = 2 ∗-5000- = 2∗ 4999!

F (4998) = 2 ∗ F-(4999) = 22 ∗ 4998!               4999

            F (4998) F (4997) = 2 ∗------ = 23 ∗ 4997!               4998

Замечаем, что в общем виде F  вычисляется как         5000−n F (n) = 2     ∗n!

Вычислим требуемое и получим ответ.

Ответ: 26250
Оцените статью
Я решу все!