''' Сеть задана IP‑адресом одного из входящих в неё узлов 130.123.96.2
и сетевой маской 255.255.248.0.

Найдите наибольший IP‑адрес в
данной сети, который может быть назначен компьютеру и в двоичной
записи которого имеется равное количество единиц и нулей. В ответе
укажите найденный IP‑адрес без разделителей.

Например, если бы
найденный адрес был равен 111.22.3.44, то в ответе следовало бы за‑
писать 11122344. '''


from ipaddress import ip_network

net = ip_network('130.123.96.2/255.255.248.0', 0)

#print(net[-2]) # 130123103254 bad

for ip in net:  # for ip in net.hosts():  обход по номерам компьютеров
    ip2 = f'{ip:b}'
    if ip2.count('1') == ip2.count('0'):
        res = ip

print(res)  # 130.123.103.224 ok  (последний байт четный,
            # значит ответ не совпадает с широковещательным)




