Var f:file of integer; a,i,k,n:integer; begin randomize; assign(f,'file'); rewrite(f); repeat write('Четное количество элементов: '); readln(n); until(n>1) and (n mod 2=0); for i:=1 to n do begin a:=random(100); write(f,a); end; writeln('Содержание исходного файла:'); reset(f); while not eof(f) do begin read(f,a); write(a,' '); end; close(f); writeln; reset(f); seek(f,filesize(f)div 2); truncate(f); writeln('Содержание измененного файла:'); reset(f); while not eof(f) do begin read(f,a); write(a,' '); end; close(f); 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,i,k,n:integer;
begin
randomize;
assign(f,'file');
rewrite(f);
repeat
write('Четное количество элементов: ');
readln(n);
until(n>1) and (n mod 2=0);
for i:=1 to n do
begin
a:=random(100);
write(f,a);
end;
writeln('Содержание исходного файла:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a,' ');
end;
close(f);
writeln;
reset(f);
seek(f,filesize(f)div 2);
truncate(f);
writeln('Содержание измененного файла:');
reset(f);
while not eof(f) do
begin
read(f,a);
write(a,' ');
end;
close(f);
readln
end.