ЕГЭ Информатика 2025: Задача 13 (маски подсетей, Python)

Задание повышенного уровня сложности, на выполнение отводится 3 минуты. Проверяется умение использовать маски подсетей.

Условие задачи

Задана сеть с IP-адресом 172.16.168.0/248. Необходимо определить количество IP-адресов в этой сети, для которых количество единиц в двоичной записи IP-адреса не кратно пяти. В ответе указать только число.

Решение на языке Python

Задача эффективно решается на языке программирования Python с использованием модуля ipaddress.

Решение

Импортируем необходимые функции из модуля ipaddress:

from ipaddress import *

Создаём переменную k для подсчёта количества подходящих IP-адресов:

k = 0

Создаём объект сети с помощью функции ip_network, передав IP-адрес и маску:

network = ip_network('172.16.168.0/248')

Используем цикл for для перебора всех IP-адресов в сети:

for ip in network:
    ip_bin = bin(int(str(ip)))[2:].zfill(32)
    if ip_bin.count('1') % 5 != 0:
        k += 1

После перебора всех IP-адресов выводим значение переменной k:

print(k)

Полный код программы

from ipaddress import *

k = 0
network = ip_network('172.16.168.0/248')
for ip in network:
    ip_bin = bin(int(str(ip)))[2:].zfill(32)
    if ip_bin.count('1') % 5 != 0:
        k += 1
print(k)

Запуск этого кода даёт ответ: 1663.

Задача решена. Использование Python и модуля ipaddress значительно упрощает процесс обработки IP-адресов и позволяет эффективно получить ответ.

Что будем искать? Например,программа