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

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

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

📺 YouTube: clck.ru/3FwqbX

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


🚩 Условие задачи:
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Вычесть 1
B. Вычесть 2
C. Найти целую часть от деления на 3

Сколько существует программ, для которых при исходном числе 19 результатом является число 4, при этом траектория вычислений содержит число 6 и не содержит 13?



👩‍💻 Код решения:
def F(a, b):
if a <= b or a == 13:
return a == b
return F(a-1, b) + F(a-2, b) + F(a//3, b)

print(F(19, 6) * F(6, 4))

Ответ: 212


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


1⃣ def F(a, b):
· Объявление рекурсивной функции F с двумя параметрами a и b


2⃣ if a <= b or a == 13:
· Проверяем условие остановки: если a ≤ b или a равно 13


3⃣ return a == b
· Если условие выше выполнено, возвращаем True только если a равно b, иначе False


4⃣ return F(a-1, b) + F(a-2, b) + F(a//3, b)
· Рекурсивно вызываем функцию F для трех случаев: a-1, a-2 и a//3 (целочисленное деление)
· Суммируем результаты всех трех вызовов


5⃣ print(F(19, 6) * F(6, 4))
· Вычисляем произведение F(19, 6) и F(6, 4)
· Выводим результат



#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥3❤‍🔥2
🚀 Почему range(10**9) почти не занимает памяти? #tpy

Многие думают, что создание очень большого диапазона - это много памяти. Но в Python всё иначе! 👩‍💻

🔍 range() хранит только начальное, конечное значения и шаг.
Он не создает список всех чисел сразу, а генерирует числа по мере необходимости!

💻 При вызове range(10**9) в памяти хранится лишь небольшая информация:
- старт (по умолчанию 0)
- финиш (10^9)
- шаг (по умолчанию 1)

А это ведь совсем немного данных!

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍3🔥2
🚩🚩 Разбор номера 23201 #КЕГЭ по информатике #ЕГЭ17

Автор: Основная волна 10.06.25
Уровень: Базовый


🚩 Условие задачи:
Определите количество пар последовательности, в которых только один из элементов является трёхзначным числом, a сумма элементов пары кратна минимальному трёхзначному элементу последовательности, оканчивающемуся на 7. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.



👩‍💻 Код решения:
M = [int(x) for x in open('17.txt')]
A = [x for x in M if len(str(abs(x))) == 3]
B = [x for x in A if abs(x) % 10 == 7]
R = []
for i in range(len(M)-1):
x, y = M[i], M[i+1]
if (x in A) + (y in A) == 1:
if (x + y) % min(B) == 0:
R.append(x + y)
print(len(R), min(R))

Ответ: 9 107


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


1⃣ M = [int(x) for x in open('17.txt')]
· Читаем файл '17.txt', преобразуем каждую строку в целое число и создаем список M


2⃣ A = [x for x in M if len(str(abs(x))) == 3]
· Создаем список A из чисел M, которые являются трехзначными (учитываем модуль для отрицательных)


3⃣ B = [x for x in A if abs(x) % 10 == 7]
· Создаем список B из чисел A, которые оканчиваются на 7 (учитываем модуль для отрицательных)


4⃣ R = []
· Создаем пустой список R для хранения сумм пар, удовлетворяющих условиям


5⃣ for i in range(len(M)-1):
· Перебираем индексы i от 0 до предпоследнего элемента списка M


6⃣ x, y = M[i], M[i+1]
· Присваиваем x текущий элемент M[i], y - следующий элемент M[i+1]


7⃣ if (x in A) + (y in A) == 1:
· Проверяем, что только один из двух элементов (x или y) является трехзначным числом


8⃣ if (x + y) % min(B) == 0:
· Проверяем, что сумма пары x+y делится нацело на минимальное число из списка B


0⃣ R.append(x + y)
· Если оба условия выполнены, добавляем сумму пары в список R


🔟 print(len(R), min(R))
· Выводим количество найденных пар и минимальную сумму среди этих пар


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

🚘 Умение работать со строками пригодится вам при решении задач под номерами - 12, 24

🆘 # (... может каких то еще, вроде ток эти две )
🆘

📱 Топ-20 методов, которые помогут быть очень полезны:

1️⃣ upper() - переводит строку в верхний регистр.
"hello".upper() → "HELLO"

2️⃣ lower() - переводит строку в нижний регистр.
"HELLO".lower() → "hello"

3️⃣ capitalize() - делает первую букву заглавной.
"hello".capitalize() → "Hello"

4️⃣ title() - каждое слово с заглавной буквы.
"hello world".title() → "Hello World"

5️⃣ strip() - удаляет пробелы с обоих концов.
"hello".strip() → "hello"

6️⃣ lstrip() / rstrip() - удаляет пробелы слева/справа.

7️⃣ replace(old, new) - заменяет подстроку.
"abc".replace("a", "x") → "xbc"

8️⃣ split(sep) - разбивает строку по разделителю.
"a,b,c".split(",") → ["a", "b", "c"]

0⃣ join(list) - собирает строку из списка.
",".join(["a", "b", "c"]) → "a,b,c"

🔟 startswith(str) / endswith(str) - проверяет начало/конец строки.
"hello".startswith("he") → True

1️⃣1️⃣ find(sub) - ищет подстроку и возвращает индекс.
"hello".find("ll") → 2

1️⃣2️⃣ count(sub) - считает количество вхождений.
"hello".count("l") → 2

1️⃣3️⃣ isdigit() - проверяет, состоит ли строка из цифр.
"123".isdigit() → True

1️⃣4️⃣ isalpha() - проверяет, только ли буквы.
"abc".isalpha() → True

1️⃣5️⃣ isalnum() - буквы или цифры без пробелов.
"a1".isalnum() → True

1️⃣6️⃣ islower() / isupper() - проверяет регистр.

1️⃣7️⃣ zfill(width) - дополняет нулями слева.
"7".zfill(3) → "007"

1️⃣8️⃣ format() - подставляет значения в строку.
"{}".format(5) → "5"

1️⃣0⃣ f-строки (Python 3.6+) - удобный формат.
f"{5}" → "5"

2️⃣0️⃣ in – проверка наличия подстроки.
"a" in "abc" → True


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5🔥2
🚩🚩 Разбор номера 23197 #КЕГЭ по информатике #ЕГЭ13

Автор: Основная волна 10.06.25
Уровень: Базовый


🚩 Условие задачи:
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 45.172.106.203 и сетевой маской 255.255.252.0.
Найдите наибольший в данной сети IP-адрес, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей.
Например, если бы найденный адрес был равен 111.22.3.44, то в ответе следовало бы записать 11122344



👩‍💻 Код решения:
from ipaddress import *
net = ip_network("45.172.106.203/255.255.252.0", 0)
for ip in net.hosts():
print(ip)

Ответ: 45172107254


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


1⃣ from ipaddress import *
· Импортируем все функции и классы из модуля ipaddress для работы с IP-адресами и сетями


2⃣ net = ip_network("45.172.106.203/255.255.252.0", 0)
· Создаем объект сети на основе IP-адреса 45.172.106.203 и маски 255.255.252.0
· Аргумент 0 означает, что не нужно проверять корректность адреса относительно маски


3⃣ for ip in net.hosts():
· Перебираем все хосты (адреса) в созданной сети, исключая адрес сети и широковещательный адрес


4⃣ print(ip)
· Выводим каждый IP-адрес хоста из сети


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

Вы когда-нибудь сталкивались с задачей - найти позицию элемента в списке или строке? Тогда метод .index() - то что вам нужно)

🔍 Что делает .index()?

Он возвращает индекс первого вхождения указанного элемента в последовательность (список, строку, кортеж).

Пример:
fruits = ['киви', 'банан', 'груша', 'банан', 'виноград']
pos = fruits.index('банан')
print(pos) # Выведет: 1


- .index() ищет 'банан' и возвращает его первую позицию - 1 (учитывая, что нумерация с 0).

⚠️ Важно: если элемента в последовательности нет - .index() вызовет ошибку ValueError.
Чтобы избежать этого, можно воспользоваться оператором in для проверки, на наличие элемента.

🔥 Совет:
Для поиска всех вхождений элемента — используйте цикл или генератор, а .index() отлично подходит для быстрого определения первой позиции.



#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍2🔥1
🚩🚩 Разбор номера 23195 #КЕГЭ по информатике #ЕГЭ11

Автор: Основная волна 10.06.25
Уровень: Базовый


🚩 Условие задачи:
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 172 символов. В базе данных каждый серийный номер занимает одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 356 984 серийных номеров потребовалось не менее 54 Мбайт памяти. Определите минимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.



👩‍💻 Код решения:
from math import *
for alf in range(1, 10000):
bit = ceil(log2(alf))
byte = ceil(172 * bit / 8)
if 356984 * byte >= 54 * 1024 * 1024:
print(alf)
break

Ответ: 129


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


1⃣ from math import *
· Импортируем все функции из модуля math, включая log2 и ceil


2⃣ for alf in range(1, 10000):
· Перебираем значения alf от 1 до 9999 (ищем минимальное подходящее значение)


3⃣ bit = ceil(log2(alf))
· Вычисляем минимальное количество бит, необходимое для кодирования одного символа алфавита размером alf


4⃣ byte = ceil(172 * bit / 8)
· Вычисляем размер одного пароля в байтах: 172 символа × бит на символ ÷ 8 бит в байте


5⃣ if 356984 * byte >= 54 * 1024 * 1024:
· Проверяем, что общий размер 356984 паролей превышает или равен 54 МБ (54 × 1024 × 1024 байт)


6⃣ print(alf)
· Выводим найденное значение размера алфавита


7⃣ break
· Прерываем цикл после нахождения первого подходящего значения (минимального alf)



#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
📎 Расписание экзаменов для выпускников 11 класса в 2026 году
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
🔥 ЕГЭ по информатике - 18 и 19 июня


по остальным датам:

Полное расписание ЕГЭ 2026:


1 июня
-- история, литература, химия

4 июня
-- русский язык

8 июня
-- математика (базовый и профильный уровни)

11 июня
-- обществознание, физика

15 июня
-- биология, география, иностранные языки
(письменная часть)


18 и 19 июня
-- информатика и иностранные языки
(устная часть)


🗓Резервные дни:
22–25 июня
- пересдача любых предметов


Дополнительные пересдачи:
8 и 9 июля
- можно по желанию пересдать один из предметов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4🔥2👍1
🔍 Как на самом деле работает pip install и что происходит, когда вы вводите эту команду #useful


🤓Итак, что делает pip?
0⃣ Ищет пакет - первым делом он обращается к Python Package Index (PyPI) или другим источникам, которые вы указали.
1⃣ Загружает нужную версию - выбирает подходящий релиз и скачивает его на ваш компьютер.
2⃣ Устанавливает зависимости - если пакет зависит от других библиотек, то pip автоматически их тоже скачает и установит.
3⃣ Распаковывает и устанавливает - файл распаковывается, а код - либо C-расширения - компилируются, либо Python-модуль сразу попадает в ваше окружение (обычно в site-packages).


🚀 Почему это важно?
Все установленные пакеты регистрируются в метаданных - так pip знает, что у вас есть, и может управлять зависимостями, обновлять или удалять их.

А если нужен другой источник?
Можно указать свой собственный репозиторий или даже установить пакет прямо из Git, архива или локальной папки — для этого есть специальные параметры, такие как --index-url.


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4👍2🔥1
📊 Минобрнауки предложило повысить минимальные пороги ЕГЭ для поступления в вузы с 2026 года

📎 Изменения коснутся шести предметов:

▫️Физика -- 41 (в 2025 - 39)
▫️История -- 40 (в 2025 - 36)
▫️Информатика -- 46 (в 2025 - 44)
▫️Иностранный язык -- 40 (в 2025 - 30)
▫️Биология -- 40 (в 2025 - 39)
▫️Химия -- 40 (в 2025 - 39)

Остальные предметы остаются без изменений:
▫️Русский язык -- 40
▫️Математика профиль -- 40
▫️Обществознание -- 45
▫️Литература -- 40
▫️География -- 40
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥72🔥1
🚩🚩🚩🚩🚩 Разбор номера 8710 #kege по информатике #ЕГЭ19 #ЕГЭ20 #ЕГЭ21
Автор: М.Шагитов
Уровень:
Средний

🚩 Условие задачи:
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из кучи один камень, либо, если в куче 4 или больше камней, он может убрать четыре камня, либо, если количество камней в куче кратно трем, он может уменьшить количество камней в куче в три раза.

Игра завершается в тот момент, когда количество камней в куче становится не более 1.

Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу из 1 камня или меньше.

В начальный момент в куче было S камней; 4 ≤ S ≤ 100.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

Задание 20.
Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

− Петя не может выиграть за один ход;

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.


Задание 21.
Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:

– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.


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


👩‍💻 Код решения:
def F(s, n):
if s <= 1:
return n % 2 == 0
if n == 0:
return 0
h = [F(s - 1, n - 1)]
if s >= 4:
h += [F(s - 4, n - 1)]
if s % 3 == 0:
h += [F(s / 3, n - 1)]
return any(h) if (n - 1) % 2 == 0 else all(h)

print([s for s in range(4, 100 + 1) if F(s, 2)])
print([s for s in range(4, 100 + 1) if F(s, 3) and not F(s, 1)])
print([s for s in range(4, 100 + 1) if F(s, 4) and not F(s, 2)])

Ответы:
6
7 10
8



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

1⃣ def F(s, n):
• Объявление функции F с параметрами s (текущее состояние) и n (количество оставшихся ходов)


2⃣ if s <= 1:
• Проверка, если s меньше или равно 1, игра завершена


3⃣ return n % 2 == 0
• Возвращает True, если n чётное (победа текущего игрока), иначе False


4⃣ if n == 0:
• Проверка, если ходы закончились (n = 0), игра проиграна


5⃣ return 0
• Возвращает 0 (ложь), так как нет ходов для победы


6⃣ h = [F(s - 1, n - 1)]
• Рекурсивный вызов F для хода s - 1 и уменьшенного n, результат добавляется в список h


7⃣ if s >= 4:
• Проверка, можно ли сделать ход s - 4


8⃣ h += [F(s - 4, n - 1)]
• Если s >= 4, рекурсивный вызов F для s - 4 и уменьшенного n, результат добавляется в h


0⃣ if s % 3 == 0:
• Проверка, делится ли s на 3


🔟 h += [F(s / 3, n - 1)]
• Если s делится на 3, рекурсивный вызов F для s / 3 и уменьшенного n, результат добавляется в h


1⃣1⃣ return any(h) if (n - 1) % 2 == 0 else all(h)
• Если предыдущий ход был чётным ((n - 1) % 2 == 0), возвращает any(h) (хотя бы один выигрышный ход), иначе all(h) (все ходы должны быть выигрышными)


1⃣2⃣ print([s for s in range(4, 100 + 1) if F(s, 2)])
• Выводит список s от 4 до 100, где игрок может выиграть за 2 хода (F(s, 2) = True)


1⃣3⃣ print([s for s in range(4, 100 + 1) if F(s, 3) and not F(s, 1)])
• Выводит список s от 4 до 100, где игрок может выиграть за 3 хода, но не за 1 (F(s, 3) = True и F(s, 1) = False)


1⃣4⃣ print([s for s in range(4, 100 + 1) if F(s, 4) and not F(s, 2)])
• Выводит список s от 4 до 100, где игрок может выиграть за 4 хода, но не за 2 (F(s, 4) = True и F(s, 2) = False)



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

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