Первые различающиеся байты переведем в двоичную систему счисления(третий байт):
Найдем наименьшее возможное значение третьего байта. Выпишем в столбик двоичные записи чисел 128 и 137. Добавим еще одну строчку, в которую будем записывать минимально возможное значение третьего байта. Если значения в столбике одинаковые, то ставим соответствующее число, если они различаются, ставим какой-нибудь знак. Я поставил знак '?'.
Теперь перенесем все '?' к последней единице(в нашем случае она и первая):
Так как нам нужно найти
наименьшее возможное значение, заменяем '?' на нули:
Т.к. в маске подсети сначала идут только единицы, а затем нули, то логично, что если третий байт имеет значение 1000 0000, то первый и второй байт имеют значения 11111111.
Следовательно наименьшая маска подсети имеет вид: 11111111.11111111.10000000.00000000
Ответ: 17 единиц.
Это код консольного приложения
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
function storona(x1,y1,x2,y2: real): real;
var s: real;
begin
s:=sqrt(sqr(x1-x2)+sqr(y1-y2));
storona:=s;
end;
var
x1,y1,x2,y2,x3,y3: real;
l1,l2,l3: real;
begin
//Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
//Если после переключения русские буквы показываются неверно,
//следует открыть системное меню консольного окна - щелчком мыши в левом
//верхнем углу окна консоли и выбрать:
//Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
write('Введите координаты точки А: ');
readln(x1,y1);
write('Введите координаты точки B: ');
readln(x2,y2);
write('Введите координаты точки C: ');
readln(x3,y3);
l1:=storona(x1,y1,x2,y2);
l2:=storona(x2,y2,x3,y3);
l3:=storona(x1,y1,x3,y3);
if (l1>l2)and(l1>l3) then
begin
writeln('Периметр прямоугольника = ',(l2+l3)*2:6:2);
writeln('Площадь прямоугольника = ',l2*l3:6:2)
end;
if (l2>l1)and(l2>l3) then
begin
writeln('Периметр прямоугольника = ',(l1+l3)*2:6:2);
writeln('Площадь прямоугольника = ',l1*l3:6:2)
end;
if (l3>l1)and(l3>l2) then
begin
writeln('Периметр прямоугольника = ',(l1+l2)*2:6:2);
writeln('Площадь прямоугольника = ',l1*l2:6:2)
end;
readln;
end.
00010001
+00010110
----------------
00100111