В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Сеть задана IP-адресом 112.160.0.0 и сетевой маской 255.240.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?
В ответе укажите только число.
Ответ:
ЕГЭ по информатике Основная волна 08.06.2024 kompege.ru – задание №13
Решение:
|
1 2 3 4 5 6 7 |
from ipaddress import * k=0 net=ip_network('112.160.0.0/255.240.0.0') for i in net: if bin(int(i))[2:].count('1')%3!=0: k=k+1 print(k) |
Описание кода:
from ipaddress import *– импортирует все функции и классы из модуляipaddress, который предоставляет возможности для работы с IP-адресами и сетями.k = 0– инициализирует счетчик, который будет считать количество IP-адресов, удовлетворяющих условию задачи.net = ip_network('112.160.0.0/255.240.0.0')– создает объект сети с заданным IP-адресом и маской сети.for i in net:– цикл, который проходит по каждому IP-адресу в заданной сети.if bin(int(i))[2:].count('1') % 3 != 0:– преобразует IP-адрес в двоичную строку и считает количество единиц. Если количество единиц не кратно 3, выполняется следующий шаг.k += 1– увеличивает счетчикkна 1, если условие выполняется.print(k)– выводит значение счетчика, которое является ответом на задачу.
Ответ: 699050