Для начала представим наш IP-адрес в двоичной системе. Переведем каждый байт отдельно. Имеем следующий IP-адрес:
00010100.00010001.00000000.000<span>10000
</span>Число после косой черты - количество единиц в маске подсети. Таким образом, маска подсети будет иметь вид:
11111111.11111111.11111111.11111100
Теперь найдем сетевой адрес, выполнив поразрядно логическое умножение IP-адреса на маску подсети.
00010100.00010001.00000000.00010000 - IP-адрес
11111111.11111111.11111111.11111100 - маска подсети
00010100.00010001.00000000.000100хх - сетевой адрес
То есть минимальный адрес (заменяем "х" нулями) - 00010100.00010001.00000000.00010000 (20.17.0.16), а максимальный (заменяем "х" единицами) - 00010100.00010001.00000000.00010011 (20.17.0.19).
Ответом будут адреса из данного диапазона, то есть <span>20.16.0.17/30, 20.17.0.17/30, 20.17.0.18/30, 20.17.0.19/30.
</span>
1)285Кб
2)5 - но могу и ошибиться)
#include <string>#include <iostream>using namespace std;main(){ string s1, s2, s3, ans; cin >> s1 >> s2 >> s3; if(s1.size() >= s2.size() && s1.size() >= s3.size()) ans = s1; else if(s2.size() >= s3.size()) ans = s2; else ans = s3; for(int i = 0; i < ans.size(); i++) cout << char(int(ans[i]) - 32);}
Чтобы программировать и создавать программы
16 =2^4 ----> 4 бита для кодировки одного символа в указанном алфавите.
код номер символа
0000 1
0001 2
0010 3
0011 4
0100 5
0101 6
0110 7
0111 8
1000 9
1001 10
1010 11
1011 12
1100 13
1101 14
1110 15
1111 16