Задание № 13. ЕГЭ по информатике. Определите минимальное значение А (суммарное количество единиц в правых двух байтах больше трёх)
Пример задания.
Задание № 13. ЕГЭ по информатике
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Адрес сети равен 183.192.A.0, где А — некоторое допустимое для записи адреса сети число, а маска сети 255.255.252.0.
Определите минимальное значение А, для которого для всех IP-адресов этой сети в двоичной записи IP-адреса суммарное количество единиц в правых двух байтах больше трёх.
Программа решения задачи на языке Python
from ipaddress import *
for a in range(0,256):
k = 0
net = ip_network('183.192.' + str(a) + '.0/255.255.252.0', 0)
kol = len(list(net.hosts())) + 2
# плюс 2, так как адрес сети и широковещательный не подсчитываются
# это считается вручную :) 2**10 = 1024 это кол-во компьютеров в сети, нужно найти количество нулей в маске и вычислить 2это количество
for ip in net:
t = list(map(bin,list(map(int, str(ip).split('.')))))
if (t[-2][2:]+t[-1][2:]).count('1') > 3:
k+=1 #кол-во ПК в сети, у кот. в прав двух байтах ед. > 3
if k==kol:
print(a)
break
Вывод: 60
Комментарии