Задача #1654

Компьютерные сети

Уровень ЕГЭ

(М. Ишимов) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть, в которой содержится узел с IP-адресом 99.8.254.232, задана маской сети 255.255.A.0, где A - некоторое допустимое для записи маски число. Определите минимальное значение A, для которого для всех IP-адресов этой сети в двоичной записи IP-адреса суммарное количество единиц в левых двух байтах не более суммарного количества единиц в правых двух байтах.
В ответе укажите только число.

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

248
from ipaddress import *
from fnmatch import *
ip = ip_address('99.8.254.232')
for mask in range(33):
network = ip_network(f'{ip}/{mask}', 0)
if fnmatch(str(network.netmask), '255.255.*.0'):
if ip not in [network.network_address, network.broadcast_address]:
if all(f'{ip:b}'[:16].count('1') <= f'{ip:b}'[16:].count('1')
for ip in network):
print(network.netmask)
Быстрый переход
Перейти к задаче