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

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
🚀 Что такое zip() в Python? #tpy

🪄 Это встроенная функция, которая позволяет объединить несколько итерируемых объектов (например, списки или кортежи) в один, создавая последовательность кортежей, где каждый из них содержит элементы, расположенные на одинаковых позициях.

↗️ если проще, то:
Она берет по одному элементу из каждого итерируемого объекта и создает кортеж из них.


💻 Пример с кодом:
names = ['Анна', 'Борис']
scores = [85, 90]

result = list(zip(names, scores))
print(result)


👩‍💻 Вывод:
[('Анна', 85), ('Борис', 90)]


📎 Особенности:
- Можно объединять любое количество итерируемых объектов.
- Если длины объектов отличаются, zip() остановится на минимальной длине.

🔥 Полезно для:
- параллельной обработки списков,
- создания словарей,
- объединения данных и многого другого.

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥33🔥2
🚩🚩 Разбор номера 23282 #КЕГЭ по информатике #ЕГЭ25
Автор: Основная волна 11.06.25
Уровень: Средний


🚩 Условие задачи:
Пусть М - сумма минимального и максимального простых натуральных делителей целого числа, не считая самого числа.

Напишите программу, которая перебирает целые числа, большие 5 400 000, в порядке возрастания и ищет среди них такие, для которых М больше 60 000 и является палиндромом, т.е. одинаково читается слева направо и справа налево.

В ответе запишите в первом столбце
таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце - соответствующие им значения М.


👩‍💻 Код решения:
def prime(x):
if x <= 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True


def d(x):
a=[]
for i in range(2, int(x**0.5)+1):
if x%i==0:
a+=[i, x//i]
return sorted(set(a))
k=0
for i in range(5400001, 10**10):
a=[j for j in d(i) if prime(j) == True]
if len(a)>0:
M=min(a)+max(a)
if M>60000:
if str(M)[::-1] == str(M):
print(i, M)
k += 1
if k==5:
break

Ответ:
5400042 900009
5400420 90009
5400866 158851
5406116 1351531
5406420 90109



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


1⃣ def prime(x):
· Объявление функции для проверки, является ли число простым


2⃣ if x <= 1:
· Проверяем, если число меньше или равно 1


3⃣ return False
· Числа ≤ 1 не являются простыми


4⃣ for i in range(2, int(x**0.5)+1):
· Перебираем возможные делители от 2 до квадратного корня из x


5⃣ if x % i == 0:
· Проверяем, делится ли x на i без остатка


6⃣ return False
· Если нашли делитель, число не простое


7⃣ return True
· Если делителей не найдено, число простое


8⃣ def d(x):
· Объявление функции для нахождения всех делителей числа x


0⃣ a=[]
· Создаем пустой список для делителей


🔟 for i in range(2, int(x**0.5)+1):
· Перебираем числа от 2 до квадратного корня из x


1⃣1⃣ if x%i==0:
· Проверяем, является ли i делителем x


1⃣2⃣ a+=[i, x//i]
· Добавляем в список сам делитель i и парный ему делитель x//i


1⃣3⃣ return sorted(set(a))
· Возвращаем отсортированный список уникальных делителей


1⃣4⃣ k=0
· Счетчик найденных чисел


1⃣5⃣ for i in range(5400001, 10**10):
· Бесконечный цикл начиная с 5 400 001


1⃣6⃣ a=[j for j in d(i) if prime(j) == True]
· Создаем список простых делителей числа i


1⃣7⃣ if len(a)>0:
· Проверяем, что есть хотя бы один простой делитель


1⃣8⃣ M=min(a)+max(a)
· Вычисляем M как сумму минимального и максимального простого делителя


1⃣0⃣ if M>60000:
· Проверяем, что M больше 60 000


2⃣0⃣ if str(M)[::-1] == str(M):
· Проверяем, является ли M палиндромом (читается одинаково в обе стороны)


2⃣1⃣ print(i, M)
· Выводим число i и значение M


2⃣2⃣ k += 1
· Увеличиваем счетчик найденных чисел


2⃣3⃣ if k==5:
· Проверяем, найдено ли уже 5 чисел


2⃣4⃣ break
· Прерываем цикл после нахождения 5 подходящих чисел


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6🔥32👍1
📎 А вы знали, что в Python можно посчитать Евклидово расстояние между двумя точками всего в одну строку?) #tpy

👩‍💻 Для этого всего то нужно воспользоваться функцией dist, которая входит в стандартную библиотеку math.

В контексте 27 задачи ЕГЭ, особенно полезная вещь!!)


💻 Пример с кодом:
import math

point1 = (x1, y1)
point2 = (x2, y2)

distance = math.dist(point1, point2)
print(distance)


🔥 Преимущества:
- Простая и удобная в использовании.
- Работает для точек в 2D, 3D и более измерениях.

💡 Обратите внимание:
⚠️ math.dist() доступна только в Python 3.8 и новее.


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥3🔥2
🚩🚩 Разбор этого номера #yandex по информатике #ЕГЭ14
Автор: Яндекс учебник
Уровень: Базовый


🚩 Условие задачи:
Значение арифметического выражения

625**90 + 125**120 − 5*25

записали в системе счисления с основанием 25.

Для найденного выражения вычислите сумму его чётных цифр.



👩‍💻 Код решения:
alp = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')

def convert(n, b):
r = ''
while n > 0:
r = alp[n % b] + r
n //= b
return r

n = 625**90+125**120 - 5*25
s = convert(n, 25)
print(sum([int(x, 25) for x in s if x in alp[0::2]]))

Ответ: 4292


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


1⃣ alp = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
· Создаем отсортированный список символов для систем счисления (цифры 0-9 и буквы A-Z)


2⃣ def convert(n, b):
· Объявление функции convert для перевода числа n в систему счисления с основанием b


3⃣ r = ''
· Создаем пустую строку для хранения результата


4⃣ while n > 0:
· Цикл выполняется, пока число n больше 0


5⃣ r = alp[n % b] + r
· Берем остаток от деления n на b, находим соответствующий символ в alp и добавляем его в начало строки


6⃣ n //= b
· Делим n на b нацело (убираем обработанный разряд)


7⃣ return r
· Возвращаем полученную строку - число в системе счисления с основанием b


8⃣ n = 625**90+125**120 - 5*25
· Вычисляем большое число n по заданной формуле


0⃣ s = convert(n, 25)
· Переводим число n в 25-ричную систему счисления


🔟 print(sum([int(x, 25) for x in s if x in alp[0::2]]))
· alp[0::2] выбирает только символы с четными индексами (0, 2, 4, ...)
· Для каждого символа в строке s, если он есть в alp[0::2], преобразуем его обратно в число
· Суммируем все такие числа и выводим результат


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

1️⃣ Основы синтаксиса
- переменные, операторы, функции, базовые типы данных

2️⃣ Работа с данными и числами
- арифметика, логика, побитовые операции, приведение типов

3️⃣ Условные конструкции
- if, elif, else, вложенные условия, тернарный оператор

4️⃣ Циклы
- for, while, вложенные циклы, break, continue, pass, else

5️⃣ Строки
- операции, методы, форматирование (
f'-строки, format(), %), срезы

6️⃣ Списки и кортежи
- методы, вложенные списки, особенности кортежей

7️⃣ Словари и множества
- отличия от списков, методы, практика

8️⃣ Функции
- объявление, вызов, return

0⃣ Работа с файлами
- чтение, запись, практика

🔟 Генераторы и встроенные функции
- map(), filter(), zip(), enumerate()

1️⃣1️⃣ Модули для ЕГЭ
- itertools, math, random, ipaddress, fnmatch и др.

*⃣ Необязательно, но достаточно полезно!
- Обработка исключений, декораторы, алгоритмы (DBSCAN, K-means, Евклид), lambda-функции


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥42🔥2
🚩🚩 Разбор номера 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❤‍🔥2🔥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👍2🔥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
❤‍🔥5🔥1
📎 Методы строк в 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🔥1
🚩🚩 Разбор номера 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
3🫡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👍1🔥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
4👍1🔥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👍1🔥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👍1🔥1