Var a: array[1..n] of integer; k, i, m: byte; min: integer;
begin Write('Razmer massiva: '); Readln(k); if (k < 0) or (k > 100) then begin Writeln('Razmer dolzhen byt bolshe 0 i menshe 100'); Readln; Exit; end; Randomize; Writeln('Ishodn. massiv: '); for i:=1 to k do begin a[i]:=Random(101)-50; write(a[i]:4); end; min:=a[1]; for i:=2 to k do if a[i] < min then begin min:=a[i]; m:=i; end; a[m] := a[1]; a[1] := min; Writeln; Writeln('Min element = ', min:4, ' v posicii ', m:3); Writeln('Rezult. massiv: '); for i:=1 to k do write(a[i]:4); readln; end.
Думаю, логика у нас здесь будет такая: нужно разложить данные три числа на простые сомножители. Получится: 132 = 2 * 2 * 3 * 11 106 = 2 * 53 134 = 2 * 67 Что у них есть общего - то можно откинуть, потому что количество кругов будет при общих сомножителях делиться без остатка. Собрать в ответ нужно следующее: от первого - 2 * 2 * 3 * 11 от второго - 53 (двойку не берём, потому что она уже взята с первым) от третьего - 67 (двойку опять не берём)
Получается: 2 * 2 * 3 * 11 * 53 * 67 = 468732 секунды. Это, как я думаю, ответ.
При этом (чисто для сведения), до момента встречи: первый намотает 3551 круг второй - 4422 круга третий - 3498 кругов.
a: array[1..n] of integer;
k, i, m: byte;
min: integer;
begin
Write('Razmer massiva: ');
Readln(k);
if (k < 0) or (k > 100) then
begin
Writeln('Razmer dolzhen byt bolshe 0 i menshe 100');
Readln;
Exit;
end;
Randomize;
Writeln('Ishodn. massiv: ');
for i:=1 to k do
begin
a[i]:=Random(101)-50;
write(a[i]:4);
end;
min:=a[1];
for i:=2 to k do
if a[i] < min then
begin
min:=a[i];
m:=i;
end;
a[m] := a[1];
a[1] := min;
Writeln;
Writeln('Min element = ', min:4, ' v posicii ', m:3);
Writeln('Rezult. massiv: ');
for i:=1 to k do
write(a[i]:4);
readln;
end.