ЕГЭ · ЗАДАНИЕ 13
IP-адреса и маски · №17676
Для сети 115.192.0.0 с маской 255.192.0.0 посчитайте все IP-адреса, у которых число единиц в 32-битной записи не кратно 3. Рассматриваются все адреса сети, включая граничные; требуется количество адресов.
Источник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 2796202
Префикс /10 фиксирует 7 единиц. Остаётся 22 свободных бит. Если среди них j единиц, всего единиц 7+j; таких комбинаций C(22,j). Подходят j=0, 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22. Складываем соответствующие биномиальные коэффициенты: 1 + 22 + 1540 + 7315 + 74613 + 170544 + 497420 + 646646 + 646646 + 497420 + 170544 + 74613 + 7315 + 1540 + 22 + 1 = 2796202. Сетевой и широковещательный адрес не исключаем: считаются IP-адреса, а не только устройства.
from ipaddress import ip_network
from math import comb
net = ip_network('115.192.0.0/255.192.0.0')
h = 32 - net.prefixlen
c = int(net.network_address).bit_count()
answer = 0
for j in range(h + 1):
if (c + j) % 3 != 0:
answer += comb(h, j)
print(answer)