1. Редактор отдает приоритет комбинации 555, потому что она стоит сразу после ЕСЛИ. Потому сначала Редактор преобразует все 555 к 3.
Среди 62 пятерок комбинация 555 встретится 20 раз (62 делим нацело на 3, потому что в группе 3 цифры). Поэтому получим 20 троек и за ними 55 (62 - 60 = 2 пятерки останутся).
2. Теперь 555 больше нет и Редактор начнет заменяать каждые 333 на 5. Он так сделает три раза (заменит 9 троек на 555), потому что снова появится 555, которое более приоритетно. Поэтому 9 троек заменятся на 555, а 555 заменится на 3. Из 20 исходных троек обработали 9 и заменили их на одну троку, поэтому теперь будет строка из 12 троек (20 -9 + 1) и двух пятерок в конце.
3. Снова 9 из 12 троек заменятся на 555, а те потом заменятся на 3. Получим строку 333355. В ней 333 заменится на 5. И окончательно будет 5355.
writeln('Введите количество остановок на маршруте автобуса: ');
read(N);
writeln('Введите пункт отправления ');
read(I);
writeln('Введите конечную остановку ');
read(J);
//N должно быть >1, т.к. для корректного выполнения задачи у нас должно быть хотябы 2 остановки
//I<N+1; +1 для того, что I или J могут быть крайними
//I<>J означает I не равно J, т.к. если мы отправляемся на ту-же остановку, где мы сейчас находимся, ездить незачем
if ((N>1)and(I<N+1)and(J<N+1)and(I<>J)) then
begin
//Тут вводится переменная prov - проверка, как нам короче ехать, от меньшего к большему или в обратную сторону
prov:=N/2;
if (I<J) then if (prov>J-I) then res:=J-I-1 else res:=N-J+I-1 //если I<J, и если разница J-I < prov, то нам выгоднее ехать по прямой, если >, то в обратную сторону
else if (prov>I-J) then res:=I-J-1 else res:=N-I+J-1; // то-же самое, только для I>J
writeln();
writeln('Количество остановок между пунктами = ',res);
end
else writeln(); writeln('ДАННЫЕ НЕ КОРРЕКТНЫ, ОШИБКА ВВОДА');
5355
Объяснение:
1. Редактор отдает приоритет комбинации 555, потому что она стоит сразу после ЕСЛИ. Потому сначала Редактор преобразует все 555 к 3.
Среди 62 пятерок комбинация 555 встретится 20 раз (62 делим нацело на 3, потому что в группе 3 цифры). Поэтому получим 20 троек и за ними 55 (62 - 60 = 2 пятерки останутся).
2. Теперь 555 больше нет и Редактор начнет заменяать каждые 333 на 5. Он так сделает три раза (заменит 9 троек на 555), потому что снова появится 555, которое более приоритетно. Поэтому 9 троек заменятся на 555, а 555 заменится на 3. Из 20 исходных троек обработали 9 и заменили их на одну троку, поэтому теперь будет строка из 12 троек (20 -9 + 1) и двух пятерок в конце.
3. Снова 9 из 12 троек заменятся на 555, а те потом заменятся на 3. Получим строку 333355. В ней 333 заменится на 5. И окончательно будет 5355.
program ostan;
var N,I,J,res: integer;
prov:real;
begin
writeln('Введите количество остановок на маршруте автобуса: ');
read(N);
writeln('Введите пункт отправления ');
read(I);
writeln('Введите конечную остановку ');
read(J);
//N должно быть >1, т.к. для корректного выполнения задачи у нас должно быть хотябы 2 остановки
//I<N+1; +1 для того, что I или J могут быть крайними
//I<>J означает I не равно J, т.к. если мы отправляемся на ту-же остановку, где мы сейчас находимся, ездить незачем
if ((N>1)and(I<N+1)and(J<N+1)and(I<>J)) then
begin
//Тут вводится переменная prov - проверка, как нам короче ехать, от меньшего к большему или в обратную сторону
prov:=N/2;
if (I<J) then if (prov>J-I) then res:=J-I-1 else res:=N-J+I-1 //если I<J, и если разница J-I < prov, то нам выгоднее ехать по прямой, если >, то в обратную сторону
else if (prov>I-J) then res:=I-J-1 else res:=N-I+J-1; // то-же самое, только для I>J
writeln();
writeln('Количество остановок между пунктами = ',res);
end
else writeln(); writeln('ДАННЫЕ НЕ КОРРЕКТНЫ, ОШИБКА ВВОДА');
end.
Хоть какая-то интересная задача на этом сервисе)