Задание 10 ЕГЭ: количество адресов с условием
Количество адресов сети с условием. Тема номера — ip-адрес и маска сети. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.
Пример
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Сеть задана IP-адресом 138.196.98.0 и маской сети 255.255.254.0. Сколько в этой сети IP-адресов, для которых сумма числовых значений четырёх октетов IP-адреса кратна 9?
В ответе укажите только число.
Ответ
57Решение
В маске 23 единицы, на номер узла остаётся 32 − 23 = 9 бит, в сети 29 = 512 адресов. Адрес сети 138.196.98.0.
Сумма октетов зависит от того, как свободные биты распределены по октетам, поэтому удобнее всего перебрать все адреса сети программой (или посчитать по октетам: для каждого октета — все его возможные значения, и считать, сколько способов дают каждый остаток суммы от деления на 9).
Ответ: 57.
import ipaddress
net = ipaddress.ip_network("138.196.98.0/255.255.254.0", strict=False)
count = 0
for a in net:
if sum(map(int, str(a).split("."))) % 9 == 0:
count += 1
print(count)