Информатика | Илья Андрианов | itpy 🧑‍💻
1.03K subscribers
265 photos
21 videos
19 files
633 links
По рекламе: @ilandroxxy

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 10718 #kege по информатике #ЕГЭ16

Полный разбор задачи в Notion

👩‍💻 Код решения:
from functools import *

@lru_cache(None)
def f(n):
if n < 3:
return 2
if n > 2 and n % 2 == 0:
return 2 * f(n-2) - f(n-1) + 2
if n > 2 and n % 2 != 0:
return 2 * f(n-1) + f(n-2) - 2

print(f(170))


В следующем посте добавлю пару слов про функцию @lru_cache() с аргументом None 👇

#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
14953
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 12779 #kege по информатике #ЕГЭ16
Автор: М. Паршиков
Уровень:
Средний

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

F(n) = n, при n ≥ 3000
F(n) = n + x + F(n+2), при n < 3000

При каком целом значении х, значение выражения:
F(2984)−F(2988)=5916


👩‍💻 Код решения:
def F(n):
if n >= 3000:
return n
if n < 3000:
return n + x + F(n+2)


for x in range(-1000, 1000):
if F(2984) - F(2988) == 5916:
print(x)

# Ответ: -27


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

1⃣ def F(n):
Объявление функции F с аргументом n.


2⃣ if n >= 3000:
Проверка условия: если n больше или равно 3000.


3⃣ return n
Возвращение значения n, если условие из пункта 2 выполняется.



4⃣ if n < 3000:
Проверка условия: если n меньше 3000.


5⃣ return n + x + F(n+2)
Возвращение значения n + x + F(n+2), если условие из пункта 4 выполняется. Рекурсивный вызов функции F.


6⃣ for x in range(-1000, 1000):
Цикл for, который перебирает значения от -1000 до 999 включительно и присваивает каждое значение переменной x.


7⃣ if F(2984) - F(2988) == 5916:
Проверка условия: если разность F(2984) и F(2988) равна 5916.


8⃣ print(x)
Вывод значения x, если условие из пункта 7 выполняется.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1475
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 7655 #kege по информатике #ЕГЭ16
Автор: М. Шагитов
Уровень: Средний


🚩 Условие задачи:
Найдите последние семь цифр суммы F(2020) + F(2200).


🚩 Теоретическая справка:
Аудио с пояснением к коду решения оставлю в комментариях.


👩‍💻 Код решения:
from functools import *
@lru_cache(None)
def F(n):
if n < 2025:
return n**2
if 2025 <= n < 2050:
return 2 * F(n-1) - F(n-2) + n
if 2050 <= n <= 2100:
return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
if n > 2100:
return 2 * F(n-1) + F(n-2) + n

print(str(F(2020) + F(2200))[-7:])

Ответ: 5098903


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

1⃣ from functools import *
Импорт всех функций из модуля functools.


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


3⃣ def F(n):
Определение функции F с одним параметром n.


4⃣ if n < 2025:
Проверка условия: если n меньше 2025.


5⃣ return n**2
Возврат квадрата числа n, если условие из пункта 4 истинно.


6⃣ if 2025 <= n < 2050:
Проверка условия: если n больше либо равно 2025 и меньше 2050.


7⃣ return 2 * F(n-1) - F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 6 истинно.


8⃣ if 2050 <= n <= 2100:
Проверка условия: если n от 2050 до 2100 включительно.


0⃣ return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
Возврат значения, вычисленного по формуле, если условие из пункта 8 истинно.


1⃣0⃣ if n > 2100:
Проверка условия: если n больше 2100.


1⃣1⃣ return 2 * F(n-1) + F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 10 истинно.


1⃣2⃣ print(str(F(2020) + F(2200))[-7:])
Вызов функции F с аргументами 2020 и 2200, вычисление их суммы, преобразование в строку, взятие последних семи символов и вывод результата.


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
1044
This media is not supported in your browser
VIEW IN TELEGRAM
1⃣6⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ16 #шпора

📌 Ссылка на полную версию шпаргалки/методички на Notion.

Поставь ❤‍🔥, отправь другу, и забирай несколько полезных функций, которые уже ждут тебя здесь:

🚩 Пример типового решения:
def F(n):
if n <= 7:
return 1
else:
return n + 2 + F(n - 1)

print(F(2024) - F(2020))


🚩 Дополнительная библиотека:
from sys import *
setrecursionlimit(10000)


🚩 Ещё одна дополнительная библиотека:
from functools import *

@lru_cache(None)


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
754
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 17557 #kege по информатике #ЕГЭ16
Автор: Основная волна 08.06.24
Уровень: Базовый


🚩 Условие задачи:
Алгоритм вычисления значения функции
F(n), где n – натуральное число, задан следующими соотношениями:
F(n)=1 при n=1;
F(n)=2×n×F(n–1), если n>1.
Чему равно значение выражения (F(2024)/16−F(2023))/F(2022)?


🚩 Теоретическая справка:
В этом номере на ЕГЭ 2024 попадалась ошибка: "OverflowError: integer division result too large for a float", исправить её можно было заменой действий "/" на "//".


👩‍💻 Код решения:
import sys
sys.setrecursionlimit(10000)

def F(n):
if n == 1:
return 1
if n > 1:
return 2 * n * F(n-1)

print((F(2024) // 16 - F(2023)) / F(2022))

# Ответ: 1019592


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

1⃣ import sys
Импорт модуля sys, который обеспечивает доступ к некоторым переменным и функциям, относящимся к Python и его среде.


2⃣ sys.setrecursionlimit(10000)
Установка максимальной глубины рекурсии в 10000 для данной программы. Это предотвращает ошибку "RecursionError: maximum recursion depth exceeded", которая может возникнуть при слишком глубокой рекурсии.


3⃣ def F(n):
Определение функции F с аргументом n.


4⃣ if n == 1:
Условие проверки, равно ли значение n единице.


5⃣ return 1
Возвращение значения 1, если условие n == 1 истинно.


6⃣ if n > 1:
Условие проверки, больше ли значение n единицы.


7⃣ return 2 * n * F(n-1)
Рекурсивный вызов функции F с аргументом n-1 в случае, если n > 1. Функция возвращает удвоенное произведение n на результат вызова F(n-1).


8⃣ print((F(2024) // 16 - F(2023)) / F(2022))
Вызов функций F с аргументами 2024, 2023, и 2022, выполнение арифметических операций и вывод результата выражения.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
764
🚩🚩 Разбор ДВ #2024 номера #16 по информатике #ЕГЭ16

👩‍💻 Код решения:
import sys
sys.setrecursionlimit(10000)

def F(n):
if n == 1:
return 1
if n > 1:
return (n - 1) * F(n - 1)

print((2*F(2024) - F(2023)) / F(2022))


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
844
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 12779 #kege по информатике #ЕГЭ16
Автор: (М. Паршиков)
Уровень: Средний


🚩 Условие задачи:
Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
F(n)=n, при n≥3000
F(n)=n+x+F(n+2), при n<3000

При каком целом значении х, значение выражения:
F(2984) − F(2988) = 5916


🚩 Теоретическая справка:
Не шипка сложная, но интересная задачка. Так же интересно, что ответ у нас отрицательный, на экзамене такого быть не может.


👩‍💻 Код решения:
def F(n, x):
if n >= 3000:
return n
if n < 3000:
return n + x + F(n + 2, x)


for x in range(-100, 100):
if F(2984, x) - F(2988, x) == 5916:
print(x)

# Ответ: -27


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

1⃣ def F(n, x):
Определяем функцию F, которая принимает два аргумента: n и x.


2⃣ if n >= 3000:
Проверяем, больше ли или равно n значению 3000.


3⃣ return n
Если n больше или равно 3000, функция возвращает значение n.


4⃣ if n < 3000:
Если n меньше 3000, выполняем следующий код.


5⃣ return n + x + F(n + 2, x)
Возвращаем сумму n, x и рекурсивного вызова F с увеличенным n на 2.


6⃣ for x in range(-100, 100):
Запускаем цикл, перебирая значения x от -100 до 99 (включительно).


7⃣ if F(2984, x) - F(2988, x) == 5916:
Проверяем, равна ли разница между F(2984, x) и F(2988, x) 5916.


8⃣ print(x)
Если условие истинно, выводим текущее значение x.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥11🔥43👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 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) для кэширования данных.

Подробнее об этом писал тут.


👩‍💻 Код решения:
import sys
from functools import *
sys.setrecursionlimit(10000)

@lru_cache(None)
def F(n):
if n <= 3:
return n - 1
if n > 3 and n % 2 == 0:
return F(n - 2) + n/2 - F(n - 4)
if n > 3 and n % 2 != 0:
return F(n - 1) * n + F(n - 2)

print(F(4952) + 2 * F(4958) + F(4964))

# Ответ: 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 и является ли оно четным числом.


0⃣ return F(n - 2) + n/2 - F(n - 4)
Для четного n, возвращает результат выражения, включающего рекурсивные вызовы функции F с параметрами n-2 и n-4, вычитая из суммы половину n.


1⃣0⃣ if n > 3 and n % 2 != 0:
Проверяет, больше ли n 3 и является ли оно нечетным числом.


1⃣1⃣ return F(n - 1) * n + F(n - 2)
Для нечетного n, возвращает произведение F(n - 1) и n, добавив F(n - 2).


1⃣2⃣ print(F(4952) + 2 * F(4958) + F(4964))
Вычисляет и печатает сумму выражения, включающего F(4952), удвоенное значение F(4958) и F(4964).


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥124👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 7655 #kege по информатике #ЕГЭ16
Автор: М. Шагитов
Уровень: Средний


🚩 Условие задачи:
Найдите последние семь цифр суммы F(2020) + F(2200).


👩‍💻 Код решения:
from functools import *
@lru_cache(None)
def F(n):
if n < 2025:
return n**2
if 2025 <= n < 2050:
return 2 * F(n-1) - F(n-2) + n
if 2050 <= n <= 2100:
return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
if n > 2100:
return 2 * F(n-1) + F(n-2) + n

print(str(F(2020) + F(2200))[-7:])

Ответ: 5098903


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

1⃣ from functools import *
Импорт всех функций из модуля functools.


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


3⃣ def F(n):
Определение функции F с одним параметром n.


4⃣ if n < 2025:
Проверка условия: если n меньше 2025.


5⃣ return n**2
Возврат квадрата числа n, если условие из пункта 4 истинно.


6⃣ if 2025 <= n < 2050:
Проверка условия: если n больше либо равно 2025 и меньше 2050.


7⃣ return 2 * F(n-1) - F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 6 истинно.


8⃣ if 2050 <= n <= 2100:
Проверка условия: если n от 2050 до 2100 включительно.


0⃣ return F(n-1) + 2 * F(n-2) + 3 * F(n-3)
Возврат значения, вычисленного по формуле, если условие из пункта 8 истинно.


1⃣0⃣ if n > 2100:
Проверка условия: если n больше 2100.


1⃣1⃣ return 2 * F(n-1) + F(n-2) + n
Возврат значения, вычисленного по формуле, если условие из пункта 10 истинно.


1⃣2⃣ print(str(F(2020) + F(2200))[-7:])
Вызов функции F с аргументами 2020 и 2200, вычисление их суммы, преобразование в строку, взятие последних семи символов и вывод результата.


#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤‍🔥543
1⃣6⃣ Шпаргалка для номера #ЕГЭ16 #шпора

Собрал для вас основные моменты, которые важно знать при решении 16 номера. Для закрепления материала оставляю ссылку на подборку всех 16 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ



🚩 Пример типового решения:
def F(n):
if n <= 7:
return 1
else:
return n + 2 + F(n - 1)

print(F(2024) - F(2020))

Без лишних действий просто переписываем псевдокод в свою фукнцию не придумывая велосипедов 🚲


🚩 Дополнительная библиотека:
from sys import *
setrecursionlimit(10000)

Эта настройка полезна при возникновении ошибки RecursionError: maximum recursion depth exceeded.


🚩 Ещё одна дополнительная библиотека:
from functools import *

@lru_cache(None)

Используйте декоратор @lru_cache(None), если ваша программа зависает или слишком долго выполняется, так как это помогает кэшировать результаты вычислений.

📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion


Информатика ЕГЭ | itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥442
1⃣6⃣ Шпаргалка для номера #ЕГЭ16 #шпора

Собрал для вас основные моменты, которые важно знать при решении 16 номера. Для закрепления материала оставляю ссылку на подборку всех 16 номеров разобранных на моем канале.

📚 По этой ссылке ты найдешь мои шпаргалки по всем остальным номерам ЕГЭ


🚩🚩 Разбор номера 21902 #kege по информатике #ЕГЭ16
Автор: Открытый вариант 2025
Уровень: Базовый

def F(n):
if n >= 2025:
return n
if n < 2025:
return n * 2 + F(n + 2)

print(F(82) - F(81)) # 1945




🚩🚩 Разбор номера 21415 #kege по информатике #ЕГЭ16
Автор: Досрочная волна 2025
Уровень: Базовый

import sys
sys.setrecursionlimit(100000)

def F(n):
if n <= 5:
return 1
if n > 5:
return n + F(n - 2)

print(F(2126) - F(2122))

В этом прототипе нужно расширить глубину рекурсии из-за ошибки: "RecursionError: maximum recursion depth exceeded".



🚩🚩 Разбор номера 20906 #kege по информатике #ЕГЭ16
Автор: Апробация 05.03.25
Уровень: Базовый

import sys
sys.setrecursionlimit(100000)

def F(n):
if n == 1:
return 1
if n > 1:
return n * F(n - 1)

print((F(2024) // 4 + F(2023)) // F(2022))

print((F(2024) / 4 + F(2023)) // F(2022))
~~~^~~
OverflowError: integer division result too large for a float

Такую ошибку мы получили на экзамене 2024 года.



🚩🚩 Разбор номера 18931 #kege по информатике #ЕГЭ16
Автор: М. Попков
Уровень: Базовый

from functools import *
import sys
sys.setrecursionlimit(100000)

@lru_cache(None)
def F(n):
if n <= 3:
return n - 1
if n > 3 and n % 2 == 0:
return F(n - 2) + n / 2 - F(n - 4)
if n > 3 and n % 2 != 0:
return F(n - 1) * n + F(n - 2)


for n in range(1, 5000):
F(n)

print(F(4952) + 2 * F(4958) + F(4964))

Самая неприятная ошибка, здесь необходимо использовать библиотеку functools.


📌 Тут оставлю сылку на старую версию шпаргалки, которую делал в Notion


#⃣ Вся теория для ЕГЭ в одном месте
#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1810❤‍🔥82