Информатика ЕГЭ | Илья Андрианов | 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
📂 Как открывать файлы в Python на ЕГЭ? #tpy
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:


0⃣
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)

▶️ Читаем файл построчно, каждую строку разбиваем на числа и сразу печатаем.


1⃣7⃣
M = [int(i) for i in open('17.txt')]
print(M)

▶️ Читаем все строки файла и превращаем в список чисел.


2⃣4⃣
s = open('24.txt').readline()

Считываем только первую строку файла.


2⃣6⃣
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)

Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.


2⃣7⃣
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)

▶️ Пропускаем первую строку, заменяем запятые на точки и превращаем в числа с плавающей точкой.


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


🚩 Условие задачи:
Определите количество строк таблицы, содержащих числа, для которых выполнены все условия:

1. Четыре числа строки можно разбить на две пары чисел с равными суммами

2. Максимальное число строки меньше суммы трёх оставшихся чисел сумма чисел в строке чётна



👩‍💻 Код решения:
from itertools import permutations
cnt = 0
for s in open('0. files/9.csv'):
M = [int(x) for x in s.split(';')]
if sum(M) % 2 == 0:
if max(M) < sum(M) - max(M):
if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
cnt += 1
print(cnt)

Ответ: 139


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


1⃣ from itertools import permutations
· Импортируем функцию permutations для генерации всех перестановок


2⃣ cnt = 0
· Создаем счетчик и инициализируем его нулем


3⃣ for s in open('0. files/9.csv'):
· Открываем файл '9.csv' и построчно читаем его


4⃣ M = [int(x) for x in s.split(';')]
· Разбиваем строку по символу ';' и преобразуем каждый элемент в целое число


5⃣ if sum(M) % 2 == 0:
· Проверяем, что сумма всех чисел в строке четная


6⃣ if max(M) < sum(M) - max(M):
· Проверяем, что максимальное число меньше суммы всех остальных чисел


7⃣ if any(p[0] + p[1] == p[2] + p[3] for p in permutations(M)):
· Проверяем, существует ли такая перестановка 4 чисел, где сумма первых двух равна сумме последних двух


8⃣ cnt += 1
· Если все три условия выполнены, увеличиваем счетчик на 1


0⃣ print(cnt)
· Выводим итоговое количество строк, удовлетворяющих всем условиям


#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5🔥3
🚀 Типы данных в Python, которые считаются структурами данных #tpy

🔍- Это те типы, которые позволяют хранить и организовывать коллекции элементов.

👩‍💻 Основные структуры данных в Python:
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин'] 📎

📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20) 📎

📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3} 📎

📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25} 📎

❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4]) ➡️ frozenset({1, 2, 3, 4})

🔼🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque ⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).


Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения 👆

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


🚩 Условие задачи:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится восьмеричная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если восьмеричная запись начинается на 5, то все двойки в записи меняются на единицы, а все единицы меняются на двойки после к числу приписывается 11 слева;

б) если восьмеричная запись начинается не на 5, то к записи справа приписывается 10, а первый разряд полученной записи заменяется на 2.


Укажите максимальное число N, для которого результатом работы алгоритма является наибольшее число R, меньшее 1354.



👩‍💻 Код решения:
L = []
for n in range(1, 10000):
s = f'{n:o}' # s = oct(n)[2:]
if s[0] == '5':
s = s.replace('2', '*')
s = s.replace('1', '2')
s = s.replace('*', '1')
s = '11' + s
else:
s = s + '10'
s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
r = int(s, 8)
if r < 1354:
L.append((r, n))
print(max(L))

Ответ: 61


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


1⃣ L = []
· Создаем пустой список для хранения пар (результат, исходное число)


2⃣ for n in range(1, 10000):
· Перебираем числа n от 1 до 9999


3⃣ s = f'{n:o}' # s = oct(n)[2:]
· Преобразуем число n в восьмеричную систему счисления (без префикса '0o')


4⃣ if s[0] == '5':
· Проверяем, начинается ли восьмеричная запись с цифры 5


5⃣ s = s.replace('2', '*')
· Временно заменяем все цифры 2 на символ '*' (чтобы избежать конфликта при следующих заменах)


6⃣ s = s.replace('1', '2')
· Заменяем все цифры 1 на 2


7⃣ s = s.replace('*', '1')
· Заменяем временные символы '*' обратно на 1 (фактически меняем местами 1 и 2)


8⃣ s = '11' + s
· Добавляем в начало строки две единицы '11'


0⃣ else:
· Если восьмеричная запись НЕ начинается с 5


🔟 s = s + '10'
· Добавляем в конец строки '10'


1⃣1⃣ s = '2' + s[1:] # а первый разряд полученной записи заменяется на 2.
· Заменяем первую цифру полученной строки на 2


1⃣2⃣ r = int(s, 8)
· Преобразуем полученную строку s обратно в десятичное число, интерпретируя ее как восьмеричную


1⃣3⃣ if r < 1354:
· Проверяем, что результат r меньше 1354


1⃣4⃣ L.append((r, n))
· Добавляем в список пару (результат r, исходное число n)


1⃣5⃣ print(max(L))
· Находим и выводим максимальную пару в списке (сравнение происходит сначала по r, затем по n)



#⃣ Полный список разборов в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥44🔥2
🚀 Что такое 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