Задание 13. Информатика. ЕГЭ. Статград. 04.03.2025

Просмотры: 661
Изменено: 4 марта 2025

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске. Например, если IP-адрес узла равен \(231.32.255.131,\) а маска равна \(255.255.240.0,\) то адрес сети равен \(231.32.240.0.\)

Известно, что для узла \(129.0.2.176\) количество единиц в двоичной записи адреса сети равно количеству единиц в двоичной записи номера узла в пределах сети. Какое наибольшее число узлов, адреса которых обладают тем же свойством (включая уже названный), может быть в этой сети?

Решение:

Python


from math import comb

ip = (129 << 24) + (2 << 8) + 176

for n in range(31, 0, -1):
    mask = (2**n - 1) << (32 - n)
    net = ip & mask
    host = ip & (2**(32 - n) - 1)
    q1 = f'{net:b}'.count('1')
    if f'{host:b}'.count('1') == q1:
        print(comb(32 - n, q1))

Ответ: \(84\)