Задача #3169
Компьютерные сети
(А. Ходарин) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Узлы с адресами 95.24.2.9 и 95.24.3.10 принадлежат одной сети. Какое наименьшее количество IP-адресов, в двоичной записи которых чётное количество нулей, может содержаться в этой сети? В ответе укажите только число.
Войдите, чтобы история ответов и статистика сохранялись.
Решение
Ответ
256
from ipaddress import *
for mask in range(32, 0, -1):
net1 = ip_network(f'95.24.2.9/{mask}', 0)
net2 = ip_network(f'95.24.3.10/{mask}', 0)
if net1.network_address == net2.network_address:
print(sum(1 for ip in net1 if f'{ip:b}'.count('0') % 2 == 0))
break