Найти в Дзене

13 задание ЕГЭ информатика: разбор

Оглавление

Несмотря на то, что задание на IP-адресацию в ЕГЭ уже не первый год, оно вызывает затруднения у большого количества школьников. В связи с этим решил сделать "памятку" по основным видам задач.

13 ЕГЭ информатика питон
13 ЕГЭ информатика питон

Теоретическая справка

Компьютерам, серверам и роутерам в интернете нужно понимать, куда отправлять данные, чтобы они не потерялись во всемирной паутине по пути с какого-нибудь американского хранилища «Ютуба» в браузер школьника Димы в Новокузнецке. Один из помощников в этом деле — IP-адрес.

IP-адрес (Internet Protocol address) — уникальные цифровые координаты, которые присваиваются любому устройству в сети.

Как выглядит IP-адрес?
Как выглядит IP-адрес?

Каждое из чисел в адресе — это восьмизначное двоичное число или октет.
Оно может принимать значения от 00000000 до 11111111, что соответствует от 0 до 255 в десятичной системе счисления — то есть 256 разных значений.

Десятичное и двоичное представление IP-адреса с помощью модуля ipaddress
Десятичное и двоичное представление IP-адреса с помощью модуля ipaddress

С помощью функции ip_address() можно создать объект – IP-адрес. В качестве аргумента функции мы указываем строку, в которой записано значение IP-адреса. Обратите внимание, что функция ip_address() возвращает не просто строку, а объект типа ipaddress.IPv4Address.

Маски ЕГЭ информатика 13 задание

-4

На самом деле IP-адрес — это чуть больше, чем просто набор чисел. Он всегда состоит из двух частей: номера хоста (устройства: компьютера, телевизора, телефона, стиральной машины и любого другого гаджета, подключенного к интернету) и номера сети.

Маска подсети — это 32-битное число, указывающее, какая часть IP-адреса относится к сети, а какая — к устройствам (хостам), находящимся в этой сети.

Рассмотрим следующую задачу:

-5

Она очень просто решается аналитически. Количество адресов, находящихся в сети, соответствует числу 2, возведенному в степень количества нулей в маске. Видим, что здесь 12 нулей в маске, значит в сети 2**12 = 4096 адресов.
Однако в задаче требуется узнать, какое ЕЩЕ количество устройств можно подключить. И здесь мы переходим к одному из ключевых моментов теории по теме, запомнив который, вы будете решать успешно практически все задачи:

Устройствам в сети можно присваивать любые свободные IP-адреса, кроме первого и последнего. Первый адрес — это адрес сети, а последний адрес — широковещательный адрес. Напомню, что широковещательный адрес используется в том случае, когда надо передать информацию всем узлам в сети.

-6

Тогда из 4096 мы вычитаем 1 адрес сети, 1 широковещательный адрес, адреса 2 ноутбуков, 3 мобильных телефонов, 1 планшета и 1 smart-горшка с кактусом. Получаем ответ 4087 адресов.

13 задание ЕГЭ информатика на питоне

Теперь рассмотрим решение этой же задачи с помощью библиотеки ipaddress языка программирования Python.

Для начала надо создать сеть. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.

Метод num_addresses в библиотеке ipaddress возвращает общее количество адресов в сети. Из этого количества мы вычитаем уже подключенные к сети устройства.
Метод num_addresses в библиотеке ipaddress возвращает общее количество адресов в сети. Из этого количества мы вычитаем уже подключенные к сети устройства.

Получаем тот же самый ответ: 4087.

На примере этой же сети рассмотрим несколько базовых формулировок задач и кодов для вывода их решений.

-8

То есть метод num_addresses возвращает общее количество адресов в сети. А если нужно посчитать количество адресов, удовлетворяющих некоторому условию, то делается перебор адресов в сети. Рассмотрим на примере все той же сети.

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

Ответ: 2731
Ответ: 2731

Сколько в этой сети IP-адресов, для которых количество единиц и нулей в двоичной записи IP-адреса одинаково?

Ответ: 220
Ответ: 220

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 4, а сами адреса в двоичном виде заканчиваются на 101?

Ответ: 120
Ответ: 120

Сколько в этой сети IP-адресов, которые оканчиваются на два одинаковых бита?

Ответ: 2048
Ответ: 2048
код для 13 задания ЕГЭ информатика
код для 13 задания ЕГЭ информатика

Ну ладно-ладно, всё не так страшно. Надеюсь, вы запомнили, что каждая сеть включает в себя:

  • адрес сети
  • адреса узлов (синонимы: хостов, устройств)
  • широковещательный адрес

Адрес сети — это net[0].

Широковещательный адрес — это net[-1].

Все остальные адреса находятся между ними, то есть net[1], net[2], net[3], net[4], net[5], net[6], net[7] и т.д.

Если нужно проверять условие среди всех IP-адресов, то мы делаем перебор for ip in net.

Если нужно проверять условие среди IP-адресов узлов, то мы делаем перебор for ip in net.hosts().

Рассмотрим несколько примеров.

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

Ответ: 1585
Ответ: 1585

Сколько в этой сети IP-адресов узлов, в двоичной записи которых содержатся четыре подряд идущих нуля?

Ответ: 4094
Ответ: 4094

Задание 13 ЕГЭ информатика 2025
Задание 13 ЕГЭ информатика 2025

На ЕГЭ 2024 номер 13 был представлен заданием на подсчет количества адресов в сети, отвечающих определенному условию. Такие номера мы только что подробно рассмотрели. Может ли быть на ЕГЭ по информатике 2025 что-то другое? Может.

Давайте рассмотрим возможные формулировки. Для этого снова вспомним про маску.

Что такое маска подсети?
Что такое маска подсети?

Маска может быть представлена в двух видах:

  1. Количество единиц, входящих в маску
  2. Десятичный вид
Через / у адреса сети указано количество единиц в маске.
Через / у адреса сети указано количество единиц в маске.

Если 255.255.240.0 перевести в двоичный 32-битовый вид и посчитать количество единиц, то получится 20. Это количество мы видим и при выводе непосредственно сети net.

Переходим к задачам.

Создать сеть без маски нельзя. Никак. Поэтому если маска в условии не задана, то ее нужно перебирать в цикле. И раз маску можно задавать количеством единиц, то именно это и будем перебирать. Максимальное количество бит в маске - 32, поэтому перебор будем ставить до 33, так как правая сторона в range не учитывается.

Для узла с IP адресом 148.165.199.5 адрес сети равен 148.165.192.0. Найдите наибольшее возможное количество единиц в двоичной записи маски подсети.

Ответ: 21
Ответ: 21
Альтернативный вариант проверки условия.
Альтернативный вариант проверки условия.

Найдите наименьшее возможное количество нулей в двоичной записи маски подсети.

Ответ: 11
Ответ: 11

Найдите наибольшее возможное значение третьего слева байта маски.

Ответ: 248
Ответ: 248

Найдите количество возможных значений маски.

Ответ: 4
Ответ: 4

Шаблон 13 задание ЕГЭ информатика: возможен ли?

Если понять разницу между всеми IP-адресами/IP-адресами узлов, то решение задач 13 из ЕГЭ по информатике на Python с помощью модуля ipaddress становятся весьма шаблонным.

Несколько каркасов кодов при должном понимании легко изменяются под любой условие любого типажа задачи.

как делать 13 задание егэ информатика
как делать 13 задание егэ информатика

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