Добавить в корзинуПозвонить
Найти в Дзене

Разбор номера 18931 #kege по информатике #ЕГЭ16

Автор: М. Попков Уровень: Средний Снежная Королева создала волшебную функцию F(n), которая помогает ей вычислять силу зимы. Эта функция определяется следующим образом: F(n)=n−1, при n⩽3;
F(n)=F(n−2)+n/2−F(n−4), если n>3 и n чётно;
F(n)=F(n−1)×n+F(n−2), если n>3 и n нечётно, Королева решила узнать, насколько велика сила зимы в её королевстве. Для этого вычислите значение выражения: F(4952)+2×F(4958)+F(4964). В данном примере мы получим очень долгое выполнение нашей программы. То есть не будет никаких ошибок! Просто программа будет выполняться ну ооочень долго, поэтому добавляем декоратор @lru_cache(None) для кэширования данных. Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻 Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!
Оглавление

Автор: М. Попков

Уровень: Средний

Условие задачи:

Снежная Королева создала волшебную функцию F(n), которая помогает ей вычислять силу зимы. Эта функция определяется следующим образом:

F(n)=n−1, при n⩽3;
F(n)=F(n−2)+n/2−F(n−4), если n>3 и n чётно;
F(n)=F(n−1)×n+F(n−2), если n>3 и n нечётно,

Королева решила узнать, насколько велика сила зимы в её королевстве. Для этого вычислите значение выражения: F(4952)+2×F(4958)+F(4964).

Теоретическая справка:

В данном примере мы получим очень долгое выполнение нашей программы. То есть не будет никаких ошибок! Просто программа будет выполняться ну ооочень долго, поэтому добавляем декоратор @lru_cache(None) для кэширования данных.

Код решения:

Ответ: 9920
Ответ: 9920

Комментарии к коду:

  1. import sys
    Импортирует модуль sys, который предоставляет доступ к параметрам и функциям Python-интерпретатора.
  2. from functools import *
    Импортирует все функции из модуля functools, чтобы использовать их в коде, включая lru_cache.
  3. sys.setrecursionlimit(10000)
    Устанавливает максимальную глубину стека рекурсии на 10,000, что полезно для обеспечения работы программы без переполнения стека при глубокой рекурсии.
  4. @lru_cache(None)
    Использует декоратор lru_cache для автоматического кеширования результатов вызовов функции F, чтобы уменьшить количество повторных вычислений.
  5. def F(n):
    Определяет рекурсивную функцию F, которая принимает одно целое число n и возвращает результат вычислений на основе n.
  6. if n <= 3:
    Проверяет, является ли n меньше или равным 3.
  7. return n - 1
    Возвращает n - 1, если условие n <= 3 истинно; это базовый случай функции.
  8. if n > 3 and n % 2 == 0:
    Проверяет, больше ли n 3 и является ли оно четным числом.
  9. return F(n - 2) + n/2 - F(n - 4)
    Для четного n, возвращает результат выражения, включающего рекурсивные вызовы функции F с параметрами n-2 и n-4, вычитая из суммы половину n.
  10. if n > 3 and n % 2 != 0:
    Проверяет, больше ли n 3 и является ли оно нечетным числом.
  11. return F(n - 1) * n + F(n - 2)
    Для нечетного n, возвращает произведение F(n - 1) и n, добавив F(n - 2).
  12. print(F(4952) + 2 * F(4958) + F(4964))
    Вычисляет и печатает сумму выражения, включающего F(4952), удвоенное значение F(4958) и F(4964).
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!