Ваня придумал новый алгоритм сортировки и сейчас тренируется на кубиках с цифрами, чтобы понять, как он работает. перед ним на столе лежат кубики с числами от 1 до 10 (на каждом кубике записано одно число), выложенные в таком порядке: 8 9 10 4 5 6 1 7 2 3 за одну операцию ваня берет несколько рядом стоящих кубиков как одну конструкцию, переворачивает и кладет на прежнее место. например, если бы кубики лежали в таком порядке: 1 2 3 4 5 6 7 8 9 10, а ваня взял бы кубики начиная с кубика с цифрой 4 и заканчивая кубиком с цифрой 9 и перевернул бы, то получилась бы такая последовательность: 1 2 3 9 8 7 6 5 4 10. то, что какие-то кубики после выполнения подобных операций окажутся лежащими вверх ногами, ваню не смущает. кроме того, ваня различает кубик с цифрой 6 и кубик с цифрой 9 (они разного цвета, поэтому невозможно одну цифру получить из другой при перевороте). ване понять, какое наименьшее количество таких операций потребуется, чтобы кубики стали лежать в порядке возрастания: 1 2 3 4 5 6 7 8 9 10. комментарий. если бы у него было всего 4 кубика и они лежали в таком порядке: 4 1 3 2, то наименьшее количество операций было бы равно двум: сначала переворачиваем кусок из первых двух кубиков слева, получаем 1 4 3 2, затем переворачиваем кусок из трех кубиков справа, получаем 1 2 3 4.
Program Markovsp1;
uses crt;
const
eps=0.001;
var
t,s:real;
i:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
writeln('Программа вычисляет частичную сумму ряда ');
writeln(' S=1+1/(2^2)+1/(3^2)+1/(4^2)+... ');
writeln('Вычисление прекратится, когда модуль очередного слагаемого станет меньше 0,001');
используется цикл repeat');
writeln();
s:=0;
i:=1;
repeat
t:=1/((i)*(i));
s:=s+t;
//writeln('i=',i,' T=',t:0:6,' S=',s:0:6);
i:=i+1;
until abs(t)<eps;
writeln('s=',s:0:6,' (pi^2)/6=',(pi*pi)/6:0:6);
writeln('Приближение к (pi^2)/6 равно ',s-(pi*pi)/6:0:6);
end.
Program Markovsp2;
uses crt;
const
eps=0.001;
var
t,s:real;
i:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
writeln('Программа вычисляет частичную сумму ряда ');
writeln(' S=1+1/(2^2)+1/(3^2)+1/(4^2)+... ');
writeln('Вычисление прекратится, когда модуль очередного слагаемого станет меньше 0,001');
используется цикл while');
writeln();
s:=0;
i:=1;
t:=1;
while t>eps do
begin
t:=1/(i*i);
s:=s+t;
//writeln('i=',i,' T=',t:0:6,' S=',s:0:6);
i:=i+1;
end;
writeln('s=',s:0:6,' (pi^2)/6=',(pi*pi)/6:0:6);
writeln('Приближение к (pi^2)/6 равно ',s-(pi*pi)/6:0:6);
end.