Задание 13. Информатика. ЕГЭ. Шастин. 29.08.2024
- Просмотры: 754
- Изменено: 24 ноября 2024
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Сеть с маской \(255.255.240.0\) содержит узел с IP-адресом \(228.172.236.0\). Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно \(5\)?
В ответе укажите только число.
Решение:
Маска сети в двоичном виде имеет вид \(11111111.11111111.11110000.00000000_2\), т.е. для узла в сети выделяются \(12\) младших разрядов. Поэтому, номер узла в сети может принимать значения от \(0\) до \(2^{12}-1 = 4095\).
C++
#include<iostream>
using namespace std;
int digs(unsigned n) {
int q = 0;
for (; n ; n >>= 1) q += n & 1;
return q;
}
int p2 (int n) {
return n ? 2 * p2(n-1) : 1;
}
int32_t main() {
unsigned mask = (255 << 24) + (255 << 16) + (240 << 8);
unsigned ip = (228 << 24) + (172 << 16) + (236 << 8);
unsigned net = mask & ip;
int q = 0;
for (int i = 0; i < p2(12); i++)
q += int(digs(net + i) % 5 != 0);
cout << q << endl;
}
Ответ: \(3381\)