Найти в Дзене

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

Автор: PRO100 ЕГЭ Уровень: Средний У исполнителя есть три команды:
A. Прибавить последнюю цифру
B. Добавить остаток от деления на 68
C. Возвести в квадрат Если после выполнения команды получается такое же число, то команду нельзя применять к этому числу. Сколько существует программ, для которых при исходном числе 2 результатом является число 680, при этом траектория вычислений содержит число 68 и не содержит числа 100? Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻 Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!
Оглавление

Автор: PRO100 ЕГЭ

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

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

У исполнителя есть три команды:


A. Прибавить последнюю цифру
B. Добавить остаток от деления на 68
C. Возвести в квадрат

Если после выполнения команды получается такое же число, то команду нельзя применять к этому числу.

Сколько существует программ, для которых при исходном числе 2 результатом является число 680, при этом траектория вычислений содержит число 68 и не содержит числа 100?

Код решения:

Ответ: 47997789947424
Ответ: 47997789947424

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

  1. from functools import *
    Импортируются все функции из модуля functools.
  2. @lru_cache(None)
    Декоратор
    @lru_cache(None) используется для кеширования результатов вызовов функции F, чтобы избежать повторных вычислений для одних и тех же аргументов.
  3. def F(a, b):
    Объявляется функция F с параметрами a и b.
  4. if a >= b or a == 100:
    Проверяется условие: если a больше или равно b, или a равно 100, то функция возвращает True.
  5. R = []
    Создается пустой список R, в который будут добавляться результаты вычислений.
  6. if a % 10 != 0:
    Если остаток от деления a на 10 не равен 0.
  7. R.append(F(a + a % 10, b))
    Добавляется результат вызова F с аргументом a + a % 10 и b.
  8. if a % 68 != 0:
    Если остаток от деления a на 68 не равен 0.
  9. R.append(F(a + a % 68, b))
    Добавляется результат вызова F с аргументом a + a % 68 и b.
  10. R.append(F(a ** 2, b))
    Добавляется результат вызова F с аргументом a в квадрате и b.
  11. return sum(R)
    Функция возвращает сумму всех элементов в списке.
  12. print(F(2, 68) * F(68, 680))
    Выводится произведение результатов вызовов F с аргументами (2, 68) и (68, 680).
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨‍💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻  Вы найдете тут много полезного!