На заводе по производству кирпичей установили автоматическую линию. Главной задачей линии является сортировка по весу некоторого поддона с кирпичами. Вес кирпича варьируется от 1 до 9 кг. Количество кирпичей в линии - 7. Кирпичи лежат в лотках, робот проверяет их последовательно одно за другим, проходя от первого до последнего лотка. Робот может менять местами только соседние кирпичи. Если левый кирпич больше правого, они меняются местами. После прохождения всей линии до последнего кирпича, робот возвращается к первому кирпичу и начинает сравнение заново, переставляя, если нужно, соседние кирпичи до предпоследнего и так далее. Таким образом, при многократном возврате линия становиться отсортированной по возрастанию веса кирпичей. Например, веса кирпичей в исходном порядке: 8 1 2 4 5 3 5 Первое прохождение до последнего кирпича: 1 8 2 4 5 3 5 / 1 2 8 4 5 3 5 / 1 2 4 8 5 3 5 / 1 2 4 5 8 3 5 / 1 2 4 5 3 8 5 / 1 2 4 5 3 5 8 . (6 замен) Второе прохождение до 6-го кирпича: 1 2 4 3 5 5 8 (1 замена) Третье прохождение до 5-го кирпича: 1 2 3 4 5 5 8 (1 замена). Всего произошло 8 замен. Какое количество замен произведет робот для сортировки линии кирпичей со следующим порядком весов: 6 2 1 5 8 9 1?
Program ToDec;
Uses crt;
var s:string;
n,l,i:integer;
function Pow(x,y:integer):integer;
begin
if y>0 then Pow:=Pow(x,y-1)*x
else Pow:=1;
end;
function ToDec(A : string) : integer;
var L : Byte;
begin
if A = '' then ToDec := 0
else begin
L := length(A);
case A[1] of
'0' : ToDec := ToDec(Copy(A, 2, L - 1));
'1' : ToDec := Pow(2, L - 1) + ToDec(Copy(A, 2, L - 1));
end;
end;
end;
begin
clrscr;
write('Введите двоичное число: ');
readln(s);
writeln('Это число в десятичной системе : ', ToDec(S));
readkey;
end.