Можно ли в таблицу размером 3x3 так записать числа 3, 4, 5, 6, 7, 8, 9, 10, 11, чтобы произведение чисел первого рядка было равным произведению чисел первого столбца, произведение чисел второго рядка было равным произведению чисел второго столбца, и, наконец, произведение чисел третьего рядка было равным произведению чисел третьего столбца? , .
11 10 4
5 9 6
8 3 7
Всего есть 72 решения данной задачи.
uses math;
var a,b,c,d,e,f,g,h,i: integer;
var matrix: array [1..9] of integer;
var counter: integer;
procedure check_matrix();
label repeated;
var i:integer;
var storage: array [1..9] of integer;
begin
for i := 1 to 9 do begin
storage[i] := 0;
end;
for i := 1 to 9 do begin
if storage[matrix[i] - 2] <> 0 then begin
goto repeated;
end;
storage[matrix[i] - 2] := 1;
end;
if (matrix[2] * matrix[3] = matrix[4] * matrix[7]) and (matrix[4] * matrix[6] = matrix[2] * matrix[8]) and (matrix[7] * matrix[8] = matrix[3] * matrix[6]) then begin
writeln('', matrix[1]:3, '', matrix[2]:3, '', matrix[3]:3);
writeln('', matrix[4]:3, '', matrix[5]:3, '', matrix[6]:3);
writeln('', matrix[7]:3, '', matrix[8]:3, '', matrix[9]:3);
writeln();
counter := counter + 1;
end;
repeated:;
end;
begin
counter := 0;
for a:=1 to 9 do begin
matrix[1] := a + 2;
for b:=1 to 9 do begin
matrix[2] := b + 2;
for c:=1 to 9 do begin
matrix[3] := c + 2;
for d:=1 to 9 do begin
matrix[4] := d + 2;
for e:=1 to 9 do begin
matrix[5] := e + 2;
for f:=1 to 9 do begin
matrix[6] := f + 2;
for g:=1 to 9 do begin
matrix[7] := g + 2;
for h:=1 to 9 do begin
matrix[8] := h + 2;
for i:=1 to 9 do begin
matrix[9] := i + 2;
check_matrix();
end; end; end; end; end; end; end; end; end;
writeln('total: ', counter);
end.