Инопланетянин Булькаблука произносит за секунду 600 бит информации. Самый современный компьютер за один час расшифровывает 10 байт сказанного Булькаблукой. Сколько времени понадобится, чтобы расшифровать то, что он наговорит за 22 минуты?
Uses CRT; Type a_type=array[1..50,1..50] of integer; Var i,j,n:integer; a:a_type; t:boolean; {логическая переменная true (правда) или false (ложь)} x,y:integer; Label 1; {метка} Procedure Print(n:integer; a:a_type); {процедура вывода} Var i,j:integer; Begin for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln(''); end; end; Procedure WinSh(x1,y1,x2,y2,col1,col2:word); {процедура вывода окна} Begin TextBackGround(black); Window (x1+1,y1+1,x2+1,y2+1); {тень - черный прямоугольник} ClrScr; TextBackGround(col1); Window(x1,y1,x2,y2); ClrScr; TextColor(col2); {рисование рамки} GotoXY(2, 1); write('г'); for i:=1 to x2-x1-2 do write('='); GotoXY(x2-x1,1); write('='); GotoXY(2,y2-y1+1); write('L'); for i:=1 to x2-x1-2 do write('='); GotoXY(x2-x1,y2-y1+1); write('-'); for j:=2 to y2-y1 do begin GotoXY(2,j); write('¦'); GotoXY(x2-x1,j); write('¦'); end; End; Procedure OddMagic(n:integer; var a:a_type); {Процедура формирования магического квадрата при нечетном n. Описание алгоритма в сопроводительной записке } Var i,j,k:integer; p,l:integer; Begin for i:=1 to n do for j:=1 to n do a[i,j]:=0; j:=n div 2 +1; p:=sqr(n); i:=1; a[i,j]:=1; for l:=2 to p do begin i:=i-1; j:=j+1; if (i=0) and (j<>n+1) then i:=n; if (j=n+1) and (i<>0) then j:=1; if ((i=0) and (j=n+1)) or (a[i,j]<>0) then {важен порядок условий!} begin i:=i+2; j:=j-1; end; a[i,j]:=l; end; end; Procedure Two (n:integer; var a:a_type); {Процедура построения квадрата при n обычной четности: n=6,10,14,18...} Var u,i,j,k,m,z:integer; b:a_type; Begin u:= n div 2; m:=(u-1) div 2; OddMagic(u,b); {вызов процедуры построения квадрата при нечет-ном u} k:=u*u; for i:=1 to n do for j:=1 to n do begin if (i>=1) and (i<=u) and (j>=1) and (j<=u) then a[i,j]:=b[i,j]; if (i>=u+1) and (i<=n) and (j>=u+1) and (j<=n) then a[i,j]:=b[i-u,j-u]+k; if (i>=1) and (i<=u) and (j>=u+1) and (j<=n) then a[i,j]:=b[i,j-u]+2*k; if (i>=u+1) and (i<=n) and (j>=1) and (j<=u) then a[i,j]:=b[i-u,j]+3*k; end; for i:=1 to u do if i=u div 2+1 then begin j:= u div 2+1; for k:=1 to m do begin z:=a[i,j]; {обмен данными} a[i,j]:=a[i+u,j]; a[i+u,j]:=z; j:=j-1 end; end
Const n=5; var a:array[1..n,1..n] of integer; i,j,s1,s2:integer; b:boolean; begin for i:=1 to n do for j:=1 to n do read(a[i,j]);b:=true; s1:=0; for j:=1 to n do s1:=s1+a[1,j]; for i:=1 to n do begin s2:=0; for j:=1 to n do s2:=s2+a[i,j]; if s1<>s2 then b:=false; s2:=0; for j:=1 to n do s2:=s2+a[j,i]; if s1<>s2 then b:=false; end; if b then writeln('Матрица - магический квадрат') else writeln('Матрица не является магическим квадратом'); end.