Const n=5;m=10; var b:array[1..n,1..m]of integer; i,j,k,buf,l:integer; begin for i:=1 to n do begin writeln; for j:=1 to m do begin b[i,j]:=random(50); write(b[i,j]:4); end; end; writeln; for j:=1 to m do begin k:=0; for i:=1 to n-1 do if b[i,j]<b[i+1,j]then k:=k+1; if k=n-1 then buf:=buf+1; end; k:=0; for l:=2 to m do if l mod 2=0 then for i:=1 to n-1 do for j:=i+1 to n do if b[i,l]>b[j,l]then begin k:=b[i,l]; b[i,l]:=b[j,l]; b[j,l]:=k; end; writeln('увеличилось ',m div 2-buf); for i:=1 to n do begin writeln; for j:=1 to m do write(b[i,j]:4); end; end.
Первый условно назовем "я - компьютер". Вы превращаетесь в Исполнителя и с железной тупостью выполняете алгоритм - инструкцию за инструкцией, каждый раз выписывая на бумаге результат. Если у Вас много времени и Вы, как и компьютер, не делаете ошибок, то рано или поздно нужный результат будет получен.
Второй назовем "я - человек". Вы напрягаете свой мозг и определяете, что именно делает алгоритм, после чего проводите нужные вычисления. В этом варианте обычно к результату приходят быстрее.
Попробуем второй путь.
Вначале полагаем, что s=0, n=12. Далее следует цикл, в котором i последовательно принимает значения 1, 2, ... 10. s=s+"что-то" говорит нам о том, что в s накапливается некая сумма, для чего s предварительно обнулялось. А что именно накапливается? n-i. При проходах по циклу это будут значения n-1, n-2, ... n-10. У нас n=12, поэтому в s будет накапливаться сумма 11+10+9+...+2. Или, это удобнее записать как 2+3+4+...+9+10+11. Это сумма арифметической прогрессии из 10 членов и ее можно найти по формуле суммы арифметической прогрессии. Если лениво вспоминать формулу, можно просто сложить эти числа. А можно поступить, как поступил в свое время Гаусс: заметить, что 2+11=13, 3+10=13, 4+9=13 и таких пар 5. И найти результат 5×13=65. Такая вот победа мозга над рутиной))) ответ: 65
205(8) = 133(10)
205(8) = 2∙8^2+0∙8^1+5∙8^0 = 128+0+5 = 133(10)