Информатика ЕГЭ | Илья Андрианов | itpy 🧑‍💻
1.22K subscribers
277 photos
23 videos
19 files
669 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🚩🚩 Разбор номера 21420 #kege по информатике #ЕГЭ23
Автор: Досрочная волна 2024
Уровень: Базовый


🚩 Условие задачи:
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить 1
B. Прибавить 2
C. Умножить на 2

Сколько существует программ, которые преобразуют число 7 в число 51, и при этом траектория вычислений содержит числа 13 и 15, но не содержит числа 35?


🚩 Теоретическая справка:
Довольно забавная программа, так как у некоторых ребят на стареньких компьютерах она считается долго. И можно воспользоваться кэшированием из 16 номера для ускорения вычислений!


👩‍💻 Код решения:
from functools import *
@lru_cache(None)
def F(a,b):
if a >= b or a == 35:
return a == b
return F(a + 1, b) + F(a + 2, b) + F(a * 2, b)

print (F(7, 13) * F(13, 15) * F(15, 51))

Ответ: 174034068

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

1⃣ from functools import *
Импортируется модуль functools, который содержит полезные инструменты для работы с функциями (в частности - декоратор lru_cache).


2⃣ @lru_cache(None)
Декоратор, который запоминает результаты всех вызовов функции F.
Благодаря этому при повторных вызовах с теми же аргументами программа работает быстрее, не пересчитывая одно и то же.


3⃣ def F(a, b):
Определяется рекурсивная функция F, принимающая два параметра — a (начальное число) и b (конечное число).


4⃣ if a >= b or a == 35:
Проверяется условие остановки рекурсии:
- если a стало больше или равно b,
- либо если a достигло числа 35,
то дальнейшие шаги не выполняются.


5⃣ return a == b
Возвращает True (1), если a равно b, и False (0) — в остальных случаях.
Таким образом, функция подсчитывает количество способов дойти до b.


6⃣ return F(a + 1, b) + F(a + 2, b) + F(a * 2, b)
Если условие не выполнено, функция рекурсивно вызывает саму себя,
рассматривая три возможных шага из числа a:
- добавить 1,
- добавить 2,
- умножить на 2.

Сумма этих трёх вызовов возвращает количество всех возможных путей от a до b.


7⃣ print(F(7, 13) * F(13, 15) * F(15, 51))
Вычисляется произведение количества путей:
- от 7 до 13,
- от 13 до 15,
- от 15 до 51.

Затем результат выводится на экран.


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥1🔥1