В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Сеть задана IP-адресом 112.160.0.0 и сетевой маской 255.240.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 5?
В ответе укажите только число.
Решение:
Решение на Python — Митаева Зарина Талгатовна
|
|
from ipaddress import * net = ip_network('112.160.0.0/255.240.0.0') cnt = 0 for ip in net: ipb = f'{ip:b}' if ipb.count('1') % 5 == 0: cnt+=1 print(cnt) |
1. Мы создаем сеть net с заданными IP-адресом и маской.
2. Инициализируем счетчик cnt для подсчета IP-адресов, удовлетворяющих условию задачи.
3. Перебираем все IP-адреса в сети net в цикле for ip in net.
4. Преобразуем текущий IP-адрес в двоичную строку с помощью f'{ip:b}'.
5. Проверяем, является ли количество единиц в двоичной записи кратным 5 с помощью условия if ipb.count('1') % 5 == 0.
6. Если условие выполняется, увеличиваем счетчик cnt.
7. В конце выводим значение счетчика cnt, которое и является ответом задачи.
Ответ: 215766