Для начала представим наш IP-адрес в двоичной системе. Переведем каждый байт отдельно. Имеем следующий IP-адрес: 00010100.00010001.00000000.00010000 Число после косой черты - количество единиц в маске подсети. Таким образом, маска подсети будет иметь вид: 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). ответом будут адреса из данного диапазона, то есть 20.16.0.17/30, 20.17.0.17/30, 20.17.0.18/30, 20.17.0.19/30.
program raf105;
var a,b,X,Y:integer;
begin
write('Введите число: ');
readln(a);
while a>0 do
begin
b:= a mod 10;
a:= (a-b) div 10;
if (b mod 2 = 0) and (b<>0)
then X:= X+1
else if b<>0 then Y:= Y+1;
end;
if X>Y
then writeln('В числе больше чётных цифр')
else if X<Y
then writeln('В числе больше нечётных цифр')
else writeln('Чётных и нечётных цифр в числе поровну');
end.
Написано на языке PascalABC.NET