Задача к ЕГЭ по информатике на тему «задачи под вебы» №3

Источник: Демо-2023

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

F (n) = 1  , если n = 1

F (n) = n⋅F (n− 1)  , если n > 1  » class=»math» src=»/images/inform/quest/quest-7804-6.svg» width=»auto»>. </p>
<p class= Чему равно значение выражения F(2023)∕F(2020)  ?

Решение через рекурсию:

import sys
sys.setrecursionlimit(5000)

def f(n):
    if n == 1: # Если n равно 1
        return 1 # Возвращаем 1
    # Иначе возвращаем рекурсивное выражение
    return n * f(n - 1)
print(f(2023) / f(2020))

Решение через динамику:

f = [0]*5000 # Создается массив f длиной 5000, заполненный нулями,
# Который будет хранить значения факториалов
for n in range(1, 2050):
    if n == 1: # Если n = 1, то присваивается начальное значение факториала
        f[n] = 1
    else: # Иначе вычисляется значение факториала для текущего n
        f[n] = n * f[n-1]
print(f[2023] // f[2020])

Аналитическое решение:

Рассмотрим, что выполняет функция:

f(1) = 1

f(2) = 2 ⋅1

f(3) = 3 ⋅f(2) = 3⋅2⋅1

f(4) = 4 ⋅f(3) = 4⋅3⋅2 ⋅1

f(5) = 5 ⋅f(4) = 5⋅4⋅3 ⋅2⋅1

То есть функция считает факториал числа. Значит:

F (2023)   1⋅2 ⋅3⋅...⋅2019⋅2020⋅2021⋅2022 ⋅2023 F-(2020) = --------1⋅2⋅3-⋅...⋅2019-⋅2020--------= 2021⋅2022⋅2023 =

= 8266912626

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