Первые различающиеся байты переведем в двоичную систему счисления(третий байт):
Найдем наименьшее возможное значение третьего байта. Выпишем в столбик двоичные записи чисел 128 и 137. Добавим еще одну строчку, в которую будем записывать минимально возможное значение третьего байта. Если значения в столбике одинаковые, то ставим соответствующее число, если они различаются, ставим какой-нибудь знак. Я поставил знак '?'.
Теперь перенесем все '?' к последней единице(в нашем случае она и первая):
Так как нам нужно найти
наименьшее возможное значение, заменяем '?' на нули:
Т.к. в маске подсети сначала идут только единицы, а затем нули, то логично, что если третий байт имеет значение 1000 0000, то первый и второй байт имеют значения 11111111.
Следовательно наименьшая маска подсети имеет вид: 11111111.11111111.10000000.00000000
Ответ: 17 единиц.
Var
max, //максимальный элемент
min, //минимальный элемент
sum, //сумма всех чисел
n, //количество чисел
j: integer;
Begin
write('Введите количество чисел: ');
readln(n);
write('Введите числа: ');
readln(j);
max:=j; min:=j; sum:=j; //1-й элемент это мин, макс, и сумма одновременно
for var i:=2 to n do begin
readln(j);
if(j > max) then max:=j
else if(j < min) then min:=j;
sum:= sum+j;
end;
sum:= round(sum/n)*min-max; //результирующая формула
if sum < 0 then writeln('Результат: ', -sum)//умножаем на -1 если результат<0
else writeln('Результат: ', sum);
End.
Часть имени файла, которая обозначает тип файла: расширение