В терминологии сетей 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