Задание № 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


Комментарии