Первые различающиеся байты переведем в двоичную систему счисления(третий байт):
Найдем наименьшее возможное значение третьего байта. Выпишем в столбик двоичные записи чисел 128 и 137. Добавим еще одну строчку, в которую будем записывать минимально возможное значение третьего байта. Если значения в столбике одинаковые, то ставим соответствующее число, если они различаются, ставим какой-нибудь знак. Я поставил знак '?'.
Теперь перенесем все '?' к последней единице(в нашем случае она и первая):
Так как нам нужно найти
наименьшее возможное значение, заменяем '?' на нули:
Т.к. в маске подсети сначала идут только единицы, а затем нули, то логично, что если третий байт имеет значение 1000 0000, то первый и второй байт имеют значения 11111111.
Следовательно наименьшая маска подсети имеет вид: 11111111.11111111.10000000.00000000
Ответ: 17 единиц.
<em>1. Современное решение, когда можно решить "в одну строку"</em>
<em>// PascalABC.NET 3.2, сборка 1439 от 09.05.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
Writeln('S=',ReadSeqInteger(3).Select(n->n.ToString
.Where(d->Pos(d,'13579')>0)).SelectMany(c->c)
.Select(c->c.ToDigit).Sum)
end.
<u>Пример</u>
252 337 105
S=24
<em>2. А примерно вот так учат писать в школе - долго и длинно (да и не особо понятно)</em>
var
m,i,j,s,d:integer;
begin
s:=0;
for i:=1 to 3 do begin
Read(m);
for j:=1 to 3 do begin
d:=m mod 10;
if d mod 2<>0 then s:=s+d;
m:=m div 10
end
end;
Writeln('S=',s)
end.
Var a,b,c: integer;
begin clrscr;
write('Надо написать 1 число'); read(a);
write('Надо написать 2 число'); read(b);
if a<b then write('c=',a) else write('c=',b);
end.
Торможение выскакивание рекламы открывание разных программ закачка программ с вирусами из интернета изменение шрифта в худшем блокировка системы похишение всех личных данных
И может сгореть компьютер
Процессор, внутренняя память, дисководы, материнская плата.