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

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

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

📺 YouTube: clck.ru/3FwqbX

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

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

Интересная задачка 13 номера c kompege.ru от Л. Шастина.

👩‍💻 Код решения:
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'175.122.80.13/{mask}', 0)
print(net)


Для решения необходимо знать:
Количество единиц в маске подсети указывает, сколько битов адреса IP отведено для сети, а оставшиеся биты - для узлов.

Для вычисления количества возможных значений маски подсети можно использовать следующую формулу: 2**n - 2


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
7642🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 5911 #reshu по информатике #ЕГЭ13

🚩 Условие задачи:
По заданным IP-адресу узла и маске определите адрес сети.
IP-адрес узла: 129.131.130.64
Маска: 255.255.192.0


🚩 Теоретическая справка:
Простейшая задача 13 номера с которой стоит начать изучение этих задач. Главная формула:
Адрес сети = Адрес узла & Маска сети
где & - это операция побитовой конъюнкции.


👩‍💻 Код решения:
from ipaddress import *  
net = ip_network('129.131.130.64/255.255.192.0', 0)
print(net) # 129.131.128.0/18


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

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


2⃣ net = ip_network('129.131.130.64/255.255.192.0', 0)
Создание объекта сети net с заданным IP-адресом и маской подсети, причем последний аргумент указывает на коррекцию префикса.


3⃣ print(net)
Вывод объекта сети net.


4⃣ # 129.131.128.0/18
Комментарий, указывающий на правильность адресации объекта сети: IP-адрес 129.131.128.0 с маской /18.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
8654
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 7696 #reshu по информатике #ЕГЭ13

🚩 Условие задачи:
Для узла с IP-адресом 224.128.112.142 адрес сети равен 224.128.96.0.
Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.


🚩 Теоретическая справка:
Маска сети имеет длину 32 бита и вид 1111..000 (сначала единицы, потом нули). Поэтому мы можем перебрать ее значения через for mask in range(32+1):


👩‍💻 Код решения:
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'224.128.112.142/{mask}', 0)
if str(net) == f'224.128.96.0/{mask}':
print(str(net.netmask).split('.')[2])


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

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


2⃣ Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).


3⃣ net = ip_network(f'224.128.112.142/{mask}', 0)
Создание объекта сети net с заданным IP-адресом и переменной маской подсети, где последний аргумент указывает на коррекцию префикса.


4⃣ if str(net) == f'224.128.96.0/{mask}':
Условие проверки соответствия адреса сети определенному значению.


5⃣print(str(net.netmask).split('.')[2])
Вывод третьего октета маски подсети из объекта сети net, если условие выполнено.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
7643
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 10783 #kege по информатике #ЕГЭ13

🚩 Условие задачи:
Два узла, находящиеся в одной сети, имеют IP-адреса 121.171.5.70 и 121.171.5.107.
Укажите наименьшее возможное количество адресов в этой сети.


👩‍💻 Код решения:
from ipaddress import *
R = []
for mask in range(32+1):
net1 = ip_network(f'121.171.5.70/{mask}', 0)
net2 = ip_network(f'121.171.5.107/{mask}', 0)
if net1 == net2:
R.append(net1.num_addresses)
print(min(R))

Ответ: 64

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

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


2⃣ R = []
Создание пустого списка R, куда будут добавляться результаты.


3⃣ Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).

4⃣ net1 = ip_network(f'121.171.5.70/{mask}', 0)
Создание объекта сети net1 с заданным IP-адресом и переменной маской подсети, с коррекцией префикса.

5⃣ net2 = ip_network(f'121.171.5.107/{mask}', 0)
Создание объекта сети net2 с другим IP-адресом, но той же маской подсети.

6⃣ if net1 == net2:
Условие проверки, совпадают ли сети net1 и net2.

7⃣ R.append(net1.num_addresses)
Добавление количества адресов в сети net1 в список R.


8⃣ print(min(R))
Вывод минимального значения количества адресов среди всех сетей, для которых условие совпадения сетей выполнилось.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1087
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 12947 #kege по информатике #ЕГЭ13
Автор задачи: (C. Горбачёв)

🚩 Условие задачи:
Сеть задана IP-адресом 203.111.195.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, в двоичной записи которых количество нулей кратно трём, а также содержатся три подряд идущие единицы и три подряд идущих нуля одновременно?
В ответе укажите только число.


🚩 Теоретическая справка:
После того, как мы определили адрес сети с помощью функции ip_network, мы можем перебрать все IP-адреса в этой сети с помощью обычного цикла for ip in net.


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('203.111.195.0/255.255.240.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
if s.count('0') % 3 == 0:
if '111' in s and '000' in s:
cnt += 1
print(cnt)

# Ответ: 1043


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

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


2⃣ net = ip_network('203.111.195.0/255.255.240.0', 0)
Создание объекта сети net с заданным IP-адресом и маской подсети, с коррекцией префикса.


3⃣ cnt = 0
Инициализация счетчика cnt для подсчета количества IP-адресов, удовлетворяющих условиям.


4⃣ Цикл for ip in net:
Для перебора всех IP-адресов в сети net.


5⃣ s = f'{ip:b}'
Перевод IP-адреса в бинарное представление и сохранение в строковую переменную s.


6⃣ if s.count('0') % 3 == 0:
Проверка условия: количество нулей в бинарном представлении делится на 3 без остатка.


7⃣ if '111' in s and '000' in s:
Дополнительная проверка наличия подстрок '111' и '000' в бинарном представлении.


8⃣ cnt += 1
Увеличение счетчика, если IP-адрес удовлетворяет обоим условиям.


0⃣ print(cnt)
Вывод общего количества IP-адресов, которые соответствуют условиям.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1085
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 11835 #kege по информатике #ЕГЭ13
Автор задачи:
(Л. Шастин)

🚩 Условие задачи:
Сеть, в которой содержится узел с IP-адресом 207.0.A.167, задана маской сети 255.255.255.192, где A - некоторое допустимое для записи IP-адреса число. Определите количество значений A, для которых для всех IP-адресов этой сети в двоичной записи IP-адреса суммарное количество нулей в левых двух байтах больше суммарного количества нулей в правых двух байтах.
В ответе укажите только число.


🚩 Теоретическая справка:
По условию задачи требуется перебрать значения допустимого для формирования IP-адреса числа A. Поскольку на каждое число A отводится 1 байт (8 бит), допустимые числа находятся в диапазоне от 0 до 255 (в двоичной системе счисления - от 00000000 до 11111111).


👩‍💻 Код решения:
from ipaddress import *
cnt = 0
for A in range(0, 255+1):
net = ip_network(f'207.0.{A}.167/255.255.255.192', 0)
if all(f'{ip:b}'[:16].count('0') > f'{ip:b}'[16:].count('0') for ip in net):
cnt += 1
print(cnt)

# Ответ: 37


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

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


2⃣ cnt = 0
Инициализация переменной cnt для подсчета количества IP-адресов, удовлетворяющих условиям.


3⃣ for A in range(0, 255+1):
Цикл для перебора значения A от 0 до 255 включительно.


4⃣ net = ip_network(f'207.0.{A}.167/255.255.255.192', 0)
Создание объекта сети net с динамически формируемым IP-адресом, маской подсети и коррекцией префикса.


5⃣ if all(f'{ip:b}'[:16].count('0') > f'{ip:b}'[16:].count('0') for ip in net):
Проверка условия: количество нулей в первой половине бинарного представления IP-адреса больше чем во второй половине для всех IP-адресов в сети.


6⃣ cnt += 1
Увеличиваем счетчик, если IP-адрес удовлетворяет условию.


7⃣ print(cnt)
Вывод количества IP-адресов в созданных сетях, соответствующих условиям.


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
965
This media is not supported in your browser
VIEW IN TELEGRAM
1⃣3⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ13 #шпора

Подготовили для вас методическое пособие по решению 13 номера! Сохраняйте все, что нужно знать о задании 😼

В комментариях к этому посту закреплю файл в формате pdf 👇

Ссылка на шпаргалку/методичку на Notion и несколько полезных функций уже здесь:

🚩 Подключаем библиотеку:
from ipaddress import *


🚩 Функция для создания объекта сети IP:
net = ip_network('адрес сети/маска')


🚩 Получение маски сети:
net.netmask


🚩 Получение количество адресов:
net.num_addresses


🚩 Получение адреса сети:
net.network_address


🚩 Цикл для перебора значений маски:
for mask in range(33):
net = ip_network(f'адрес узла/{mask}', 0)


🚩 Цикл для перебора IP-адресов в сети:
for ip in net:


🚩 Представление ip-адреса в двоичном виде:
ip_b = f'{ip:b}'


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


🚩 Условие задачи:
Сеть, в которой содержится узел с IP-адресом 246.51.128.202, задана маской сети 255.255.A.0, где A - некоторое допустимое для записи маски число.

Определите минимальное значение A, для которого для всех IP-адресов этой сети в двоичной записи IP-адреса количество нулей в левых двух байтах не более количества нулей в правых двух байтах.


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


👩‍💻 Код решения:
from ipaddress import *
for A in [0, 128, 192, 224, 240, 248, 252, 254, 255]:
net = ip_network(f'246.51.128.202/255.255.{A}.0', 0)
if all(f'{ip:b}'[:16].count('0') <= f'{ip:b}'[16:].count('0') for ip in net):
print(A)
break

# Ответ: 254


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

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


2⃣ for A in [0, 128, 192, 224, 240, 248, 252, 254, 255]:
Цикл for перебирает значения из списка [0, 128, 192, 224, 240, 248, 252, 254, 255], присваивая каждое значение переменной A.


3⃣ net = ip_network(f'246.51.128.202/255.255.{A}.0', 0)
Создается объект net, представляющий сеть IPv4 с помощью вызова функции ip_network. IP-адрес задается как 246.51.128.202, маска подсети формируется с помощью строки 255.255.{A}.0.


4⃣ if all(f'{ip:b}'[:16].count('0') <= f'{ip:b}'[16:].count('0') for ip in net):
Выполняется условие, в котором проверяется, что для каждого IP-адреса в сети net количество битов, равных 0, в первых 16 битах меньше или равно количеству битов, равных 0, в оставшихся битах.


5⃣ print(A)
Если условие выполняется, то выводится значение переменной A.


6⃣ break
Выполняется прерывание цикла, так что после вывода значения переменной A программа завершает выполнение.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
7551
🚩🚩 Разбор ДВ #2024 номера #13 по информатике #ЕГЭ13

🚩 Условие задачи:
Сеть задана IP-адресом 106.184.0.0 и сетевой маской 255.248.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 2?



👩‍💻 Код решения:
from ipaddress import *
net = ip_network("106.184.0.0/255.248.0.0", 0)
cnt = 0
for ip in net:
if f'{ip:b}'.count('1') % 2 != 0:
cnt += 1
print(cnt)

# Ответ: 262144


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

1. from ipaddress import *
Импорт всех объектов из модуля `ipaddress`, который предоставляет классы для работы с IP-адресами и сетями.


2. net = ip_network("106.184.0.0/255.248.0.0", 0)
Создание объекта сети IP с помощью функции `ip_network`, где указаны начальный IP-адрес "106.184.0.0" и маска подсети "255.248.0.0".


3. cnt = 0
Инициализация переменной `cnt` для подсчета количества IP-адресов с определенным свойством.


4. for ip in net:
Цикл `for`, который проходит по всем IP-адресам в созданной сети `net`.


5. if f'{ip:b}'.count('1') % 2 != 0:
Проверка условия: если количество единиц в двоичном представлении IP-адреса `ip` нечетное.


6. cnt += 1
Увеличение счетчика `cnt` на 1, если условие из предыдущей строки выполнено для текущего IP-адреса.


7. print(cnt)
Вывод на экран количества IP-адресов, для которых количество единиц в двоичном представлении нечетное.


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
622
🚩🚩 Разбор ДВ #2024 номера #13 по информатике #ЕГЭ13

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


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

for i in range(2025):
F(i)

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

# Ответ: 16362024


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

1. from functools import *
Импорт модуля `functools`, который предоставляет несколько полезных функций, связанных с функциональным программированием.


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

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


4. if n == 1:
Проверка условия: если `n` равно 1.

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


6. return 2 * n * F(n - 1)
Возвращение результата умножения `2 * n` на рекурсивный вызов функции `F` с аргументом `(n - 1)`.


7. for i in range(2025):
Цикл `for`, который проходит по значениям от 0 до 2024 (не включая 2025).


8. F(i)
Вызов функции `F` для каждого значения `i` в диапазоне от 0 до 2024.


9. print((F(2024) - 4 * F(2023)) // F(2022))
Вывод на экран результата выражения `(F(2024) - 4 * F(2023)) // F(2022)`, которое содержит вызовы функции `F` с различными аргументами.


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
644
🚩🚩 Разбор ДВ #2024 номера #13 по информатике #ЕГЭ13

👩‍💻 Код решения 1 :
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'170.155.137.181/{mask}', 0)
if str(net) == f'170.155.136.0/{mask}':
print(net.netmask)



👩‍💻 Код решения 2 :
from ipaddress import *
maxi = []
for mask in range(32+1):
net = ip_network(f'170.155.137.181/{mask}', 0)
if str(net) == f'170.155.136.0/{mask}':
maxi.append(int(str(net.netmask).split('.')[2]))

print(max(maxi))


Информатика ЕГЭ | itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
663👍1
🚩🚩 Разбор ДВ #2024 номера #13 по информатике #ЕГЭ13

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

net = ip_network('106.184.0.0/255.255.240.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
if s.count('1') % 3 == 0:
cnt += 1
print(cnt)


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


🚩 Условие задачи:
Сеть задана IP-адресом 119.124.96.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, двоичная запись которых оканчивается на 0?


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('119.124.96.0/255.255.240.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
# if s.endswith('0'):
if s[-1] == '0':
cnt += 1
print(cnt)

# Ответ: 2048


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

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


2️⃣
net = ip_network('119.124.96.0/255.255.240.0', 0)
Создаем объект сети net с заданным IP-адресом и маской подсети, указываем, что это IPv4 сеть с использованием маски в десятичном формате


3️⃣
cnt = 0
Инициализируем счетчик cnt, который будет хранить количество IP-адресов, удовлетворяющих определенному условию


4️⃣
for ip in net:
Начинаем цикл, который перебирает каждый IP-адрес в заданной сети net


5️⃣
s = f'{ip:b}'
Преобразуем текущий IP-адрес ip в двоичное строковое представление с помощью форматирования


6️⃣
# if s.endswith('0'):
Cтарая версию проверки, тоже работает.


7️⃣
if s[-1] == '0':
Проверяем, оканчивается ли двоичная строка s на '0', то есть является ли последний бит нулем


8️⃣
cnt += 1
Увеличиваем счетчик cnt на единицу, если последний бит IP-адреса равен нулю


9️⃣
print(cnt)
Выводим количество IP-адресов в сети net, у которых последний бит равен нулю


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

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


🚩 Условие задачи:
Сеть задана IP-адресом 115.192.0.0 и сетевой маской 255.192.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?


🚩 Теоретическая справка:
Во всех ФИПИ вариантах/пробниках и на основном экзамене был представлен именно этот прототип, занятное наблюдение!


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('115.192.0.0/255.192.0.0', 0)
cnt = 0
for ip in net:
b_ip = f'{ip:b}'
if b_ip.count('1') % 3 != 0:
cnt += 1
print(cnt)

# Ответ: 2796202


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

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


2⃣ net = ip_network('115.192.0.0/255.192.0.0', 0)
Создаём объект сети net, используя адрес сети '115.192.0.0' и маску подсети '255.192.0.0'. 0 указывает на IPv4-адрес.


3⃣ cnt = 0
Инициализируем переменную счётчика cnt для подсчета IP-адресов, удовлетворяющих условию.


4⃣ for ip in net:
Проходим в цикле по каждому IP-адресу в сети net.


5⃣ b_ip = f'{ip:b}'
Преобразуем текущий IP-адрес в двоичное строковое представление и сохраняем его в переменную b_ip.


6⃣ if b_ip.count('1') % 3 != 0:
Проверяем, что количество единиц в двоичном представлении IP-адреса не кратно 3.


7⃣ cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.


8⃣ print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих IP-адресов.


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


🚩 Условие задачи:
Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?
В ответе укажите только число


🚩 Теоретическая справка:
Самый популярный прототип 13 номера, весь 2024 год ФИПИ публиковала именно такие задачи, есть вероятность, что в этом году прототип слегка изменится.


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('172.16.168.0/255.255.248.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
if s.count('1') % 5 != 0:
cnt += 1
print(cnt)

# Ответ: 1663



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

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


2⃣ net = ip_network('172.16.168.0/255.255.248.0', 0)
Создаем объект сети на основе IP-адреса и маски подсети, заданной в формате CIDR. Здесь '0' указывает на использование маски по умолчанию.


3⃣ cnt = 0
Инициализируем счётчик cnt равным 0. Этот счётчик будет использоваться для подсчета количества IP-адресов, удовлетворяющих заданному условию.


4⃣ for ip in net:
Начинаем цикл, который перебирает все IP-адреса в заданной сети net.


5⃣ s = f'{ip:b}'
Преобразуем текущий IP-адрес ip в двоичную строку и сохраняем её в переменной s.


6⃣ if s.count('1') % 5 != 0:
Проверяем, если количество единиц в двоичном представлении IP-адреса не делится на 5 без остатка.


7⃣ cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.


8⃣ print(cnt)
Выводим значение счётчика cnt, которое теперь содержит количество IP-адресов, не удовлетворяющих условию (количество единиц в двоичном представлении которых не делится на 5).



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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
2744
1⃣3⃣ Шпаргалка для номера #ЕГЭ13

Собрали все полезные функции из библиотеки ipaddress для нового 13 номера ЕГЭ по информатике. В меню навигации ты найдешь шпаргалки по остальным номерам!

🚩 Подключаем библиотеку:
from ipaddress import *


🚩 Функция для создания объекта сети:
net = ip_network('адрес сети/маска')


🚩 Получение маски сети:
net.netmask


🚩 Цикл для перебора значений маски:
for mask in range(33):
net = ip_network(f'адрес узла/{mask}', 0)


🚩 Цикл для перебора IP-адресов в двоичном виде:
for ip in net: 
ip_b = f'{ip:b}'


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
3843
1⃣3⃣ Шпаргалка для номера #ЕГЭ13
#реклама

Собрали все полезные функции из библиотеки ipaddress для нового 13 номера ЕГЭ по информатике. В меню навигации ты найдешь шпаргалки по остальным номерам!

🚩 Подключаем библиотеку:
from ipaddress import *


🚩 Функция для создания объекта сети:
net = ip_network('адрес сети/маска')


🚩 Получение маски сети:
net.netmask


🚩 Цикл для перебора значений маски:
for mask in range(33):
net = ip_network(f'адрес узла/{mask}', 0)


🚩 Цикл для перебора IP-адресов в сети:
for ip in net: 


🚩 Представление IP-адреса в двоичном виде:
ip_b = f'{ip:b}'


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7👍65
1⃣3⃣ Шпаргалка для номера #ЕГЭ13
#реклама

Собрали все полезные функции из библиотеки ipaddress для нового 13 номера ЕГЭ по информатике. В меню навигации ты найдешь шпаргалки по остальным номерам!

🚩 Подключаем библиотеку:
from ipaddress import *


🚩 Функция для создания объекта сети:
net = ip_network('адрес сети/маска')


🚩 Получение маски сети:
net.netmask


🚩 Цикл для перебора значений маски:
for mask in range(33):
net = ip_network(f'адрес узла/{mask}', 0)


🚩 Цикл для перебора IP-адресов в сети:
for ip in net: 


🚩 Представление IP-адреса в двоичном виде:
ip_b = f'{ip:b}'


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥116🔥44
🚩🚩 Разбор #ДВ2025 номера #ЕГЭ13 по информатике

🚩 Условие задачи:
Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.

Сеть задана ІР-адресом одного из входящих в неё узлов 97.191.34.206 и сетевой маской 255.255.255.240. Определите наибольший IP-адрес данной сети, который может быть присвоен компьютеру.


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('97.191.34.206/255.255.255.240', 0)
for ip in net:
print(ip) # 97.191.34.206
# 97.191.34.207 - не учитываем так как широковещательный

#Ответ: 9719134206



#⃣ Разбор задач ДВ, первый день 10.06.25
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥10👍7🫡4
🚩🚩 Разбор номера 18445 #kege по информатике #ЕГЭ13
Автор: Сергей Горбачев
Уровень: Средний


🚩 Условие задачи:
Сеть задана IP-адресом 140.116.194.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, в двоичной записи которых каждый из четырёх байтов оканчивается нулём?


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('140.116.194.0/255.255.240.0', 0)
cnt = 0
for ip in net:
b = f'{ip:b}'
if b[:8][-1] == '0':
if b[8:16][-1] == '0':
if b[16:24][-1] == '0':
if b[24:][-1] == '0':
cnt += 1
print(cnt)

Ответ: 1024

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

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


2⃣ net = ip_network('140.116.194.0/255.255.240.0', 0)
• Создаётся объект сети net с заданным IP-адресом и маской. Аргумент 0 указывает, что используется маска, а не префикс.


3⃣ cnt = 0
• Инициализируется счётчик для подсчёта подходящих IP-адресов.


4⃣ for ip in net:
• Цикл перебирает все IP-адреса в заданной сети.


5⃣ b = f'{ip:b}'
• Преобразует IP-адрес в строку его двоичного представления (без точек и пробелов).


6⃣ if b[:8][-1] == '0':
• Проверяет, оканчивается ли первый байт (первые 8 бит) на 0.


7⃣ if b[8:16][-1] == '0':
• Проверяет, оканчивается ли второй байт (биты с 8 по 15) на 0.


8⃣ if b[16:24][-1] == '0':
• Проверяет, оканчивается ли третий байт (биты с 16 по 23) на 0.


0⃣ if b[24:][-1] == '0':
• Проверяет, оканчивается ли четвёртый байт (биты с 24 по 31) на 0.


1⃣0⃣ cnt += 1
• Увеличивает счётчик, если все четыре байта оканчиваются нулём.


1⃣1⃣ print(cnt)
• Выводит количество IP-адресов, удовлетворяющих условию задачи.


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

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