ex exxam.ru
Задания13 из 27
01 Графы: схема дорог и таблица расстояний 02 Логика: фрагмент таблицы истинности, порядок столбцов 03 Базы данных: поиск информации в связанных таблицах 04 Кодирование: условие Фано и двоичное дерево кода 05 Двоичная запись числа: алгоритм строит новое число 06 Исполнитель Черепаха: движение и подсчёт точек 07 Информационный объём: звук и изображения 08 Подсчёт слов: лексикографический список и перебор 09 Электронные таблицы: подсчёт строк по условию 10 Текстовый документ: поиск сочетаний букв по условию 11 Объём данных: мощность алфавита и кодирование 12 Исполнитель МТ (машина на ленте): чтение программы 13 IP-адреса и маски сетей TCP/IP текущее14 Арифметические выражения и системы счисления 15 Логика: истинность выражения с отрезками и предикатами 16 Рекурсивные функции: чтение и счёт по формулам 17 Обработка целочисленной информации: поиск пар в файле 18 Динамическое программирование: Робот-сборщик монет 19 Игры: выигрышная стратегия первым ходом (куча) 20 Игры: победа Пети своим вторым ходом (куча) 21 Игры: победа Вани первым или вторым ходом (куча) 22 Многопоточные вычисления: максимальное число одновременных процессов 23 Динамика: количество программ исполнителя 24 Обработка символьных строк: поиск подстроки по условию 25 Перебор чисел: делители и сумма M 26 Задание 26 нужны файлы27 Задание 27 нужны файлы
13
1 балл демоверсия ЕГЭ-2026 сборник

IP-адреса и маски сетей TCP/IP

Задание 13 · Билет 2 · ЕГЭ по информатике

Билет 1 — демоверсия ЕГЭ-2026; остальные билеты — задания в формате экзамена (открытый сборник или тренировочные по образцу). Это тренировочные материалы, а не официальные КИМ. Ответы пересчитаны и сверены.

Условие

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла относится к адресу сети, а какая — к адресу узла. Адрес сети получается поразрядной конъюнкцией адреса узла и маски.

Сеть задана IP-адресом 249.0.33.87 и маской 255.252.0.0.

Вопрос. Сколько в этой сети IP-адресов, для которых в двоичной записи IP-адреса суммарное количество единиц в правых двух байтах более чем вдвое превосходит суммарное количество единиц в левых двух байтах? В ответе укажите только число.

Попробуйте программой

Необязательно, но удобно: напишите здесь свой код на Python, который найдёт ответ. Если не получится — откройте решение и вставьте готовую программу одной кнопкой.

Решите программой на Python

в браузере

Напишите свой код, который найдёт ответ, и нажмите «Выполнить». Горячая клавиша запуска: Ctrl/⌘ + Enter.

Результат
Здесь появится вывод print().
Не знаешь, как решать?

Потренируйся работать с масками: найди префикс, адрес сети и назначаемый адрес — от разминки до формата экзамена.

Открыть тренажёр

Решение

Решение

открыто шагов: 5 из 5
1 Шаг 1
Подход. Определяем подтип: здесь нужно посчитать количество адресов с условием, а не найти один адрес. Переводим маску в префикс, находим адрес сети и число бит узла, затем перебираем все адреса узла и применяем условие по битам.
2 Шаг 2
Это другой подтип задачи 13: здесь не ищут «наибольший адрес», а считают количество адресов с условием по битам. Маска 255.252.0.0 = 11111111.11111100.00000000.00000000 — это /14: биты узла = 32−14 = 18 бит, значит в сети 2^18 = 262144 адреса (всех, включая сеть и broadcast).
3 Шаг 3
Адрес сети = 249.0.33.87 AND 255.252.0.0 = 249.0.0.0 (во втором байте у 0 и маски 252 остаются только старшие 2 бита — они равны 0). Свободны: младшие 6 бит 2-го байта + весь 3-й и 4-й байты.
4 Шаг 4
Условие: у адреса посчитать единицы в левых двух байтах (байты 1–2) и в правых двух (байты 3–4); нужны адреса, где единиц справа больше, чем вдвое больше слева. Вручную такое не пересчитаешь — здесь удобно перебрать все 2^18 адресов программой; готовый код — в решении ниже.
5 Шаг 5
Программа выводит 731 — столько адресов удовлетворяют условию.

Программа, которая находит ответ:

ip   = (249 << 24) + (0 << 16) + (33 << 8) + 87   # IP-адрес узла одним 32-битным числом
mask = (255 << 24) + (252 << 16)                  # маска сети 255.252.0.0
net  = ip & mask                                  # адрес сети (поразрядное И)
ans  = 0                                          # счётчик подходящих адресов
for x in range(1 << 18):                          # перебираем все 2^18 номеров узла
    a = net + x                                   # очередной адрес сети
    left  = (a >> 16) & 0xFFFF                    # левые два байта адреса
    right = a & 0xFFFF                            # правые два байта адреса
    if bin(right).count('1') > 2 * bin(left).count('1'):  # условие задачи
        ans += 1                                  # адрес подходит — считаем его
print(ans)                                        # выводим ответ

Правильный ответ этого билета: 731
Проверка: перебор всех адресов сети даёт 731. Ответ совпадает с опубликованным в источнике.

Теория и другие билеты

Разбор с нуля, типовые ошибки, частые вопросы и все билеты задания 13 — на странице задания.

Задание 13: теория и другие билеты Практикум