Найти в Дзене

Разбор номера 12947 по информатике #13

Оглавление

Условие: № 12947 (Уровень: Средний)
Статья подготовлена командой itpy
Полный разбор задачи в Telegram

🚩 Условие задачи:

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

🚩 Теоретическая справка:

После того, как мы определили адрес сети с помощью функции ip_network, мы можем перебрать все IP-адреса в этой сети с помощью обычного цикла for ip in net.


👩‍💻 Комментарии к коду:

1. from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.

2. net = ip_network('203.111.195.0/255.255.240.0', 0)
Создание объекта сети net с заданным IP-адресом и маской подсети, с коррекцией префикса.

3. cnt = 0
Инициализация счетчика cnt для подсчета количества IP-адресов, удовлетворяющих условиям.

4. Цикл for ip in net:
Для перебора всех IP-адресов в сети net.

5. s = f'{ip:b}'
Перевод IP-адреса в бинарное представление и сохранение в строковую переменную s.

6. if s.count('0') % 3 == 0:
Проверка условия: количество нулей в бинарном представлении делится на 3 без остатка.

7. if '111' in s and '000' in s:
Дополнительная проверка наличия подстрок '111' и '000' в бинарном представлении.

8. cnt += 1
Увеличение счетчика, если IP-адрес удовлетворяет обоим условиям.

9. print(cnt)
Вывод общего количества IP-адресов, которые соответствуют условиям.

Ответ: 1043

Читайте нас в телеграмме:

Информатика ЕГЭ | itpy 👨‍💻

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy