Информатика ЕГЭ | Илья Андрианов | 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
📂 Как открывать файлы в 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
❤‍🔥63🔥3👍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🔥3
🚩🚩 Разбор этого номера #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🔥3
📎 Краткий список тем, которые точно понадобятся на экзамене!) #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
❤‍🔥43🔥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🔥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