Получить на экране значения, показанные в задании, используя при этом массив (хотя он здесь совершенно не нужен), можно так: const n=6; var a:array [1..n] of integer; i,j:integer; begin for i:=1 to n do a[i]:=i+4; for j:=0 to 5 do begin write('':3*j); for i:=1 to n-j do write(a[i]:3); writeln; end; end.
Делим своё богатство на три кучки по 9 монет в каждой. Две любые из этих кучек сравниваем. Которая легче, та и содержит фальшивую. Если две кучки равны по весу, то фальшивая в третьей. Это первое взвешивание, по результатам которого нашли кучку из 9 монет, в которой фальшивая.
Далее кучку из 9 монет делим на три кучки по три монеты, и две любые из этих двух кучек взвешиваем. Принцип тот же, находим кучку из трёх монет, в которой фальшивая. Это второе взвешивание.
Осталось 3 монеты. Две любые из них взвешиваем, и конкретно узнаём фальшивую. Это третье взвешивание. Трёх достаточно.
const n=6;
var a:array [1..n] of integer;
i,j:integer;
begin
for i:=1 to n do a[i]:=i+4;
for j:=0 to 5 do
begin
write('':3*j);
for i:=1 to n-j do write(a[i]:3);
writeln;
end;
end.
Результат:
5 6 7 8 9 10
5 6 7 8 9
5 6 7 8
5 6 7
5 6
5