ЕГЭ · ЗАДАНИЕ 10
IP-адреса и маски · №10156
Адрес узла — 203.155.64.98, адрес его сети — 203.155.64.0. Маска состоит из непрерывной цепочки единиц и следующих за ней нулей. Определите наибольшее число единиц в маске. Ответ — десятичное число.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 25
Проверяем все длины префикса от 0 до 32: IP & mask должен точно совпасть с заданным адресом сети. Подходят префиксы /18, /19, /20, /21, /22, /23, /24, /25. Нули и единицы маски нельзя расставлять произвольно. Из подходящих масок выбираем именно величину, указанную в вопросе.
from ipaddress import ip_network
valid, third = [], []
for p in range(33):
net = ip_network('203.155.64.98/' + str(p), strict=False)
if str(net.network_address) == '203.155.64.0':
valid.append(p)
third.append(int(str(net.netmask).split('.')[2]))
print(max(valid))