Алгоритм переливаний
В кабинете химии есть три колбы объёмами 6 мл, 20 мл и 35 мл. Обозначим их буквами A, B, C соответственно. Также у вас есть неограниченный запас реактива. Используя эти колбы вам необходимо отмерить ровно 1 мл реактива. При этом весь реактив, который будет налит в колбы, придётся вылить (он будет загрязнён от контакта с колбами), поэтому вы хотите потратить как можно меньше реактива, чтобы отмерить ровно 1 мл.
С колбами можно выполнять следующие действия:
Наполнить какую-то колбу реактивом до края.
Вылить весь реактив из какой-то колбы.
Перелить реактив из одной колбы в другую, пока в первой колбе не кончится реактив или вторая колба не заполнится целиком.
Составьте алгоритм переливаний, в результате исполнения которого в какой-то из колб окажется 1 мл реактива, а объём использованного реактива будет как можно меньше.
Для записи алгоритма используются следующие команды:
>X
Наполнить колбу X (вместо X должен быть один из символов A, B, C).
X>
Вылить реактив из колбы X (вместо X должен быть один из символов A, B, C).
X>Y
Перелить реактив из X в Y (вместо X и Y должны быть два различных символа из A, B, C). Нельзя переливать реактив из одной колбы в ту же самую колбу.
Команды записываются по одной в строке. Например, следующая последовательность команд
>B
B>C
C>
обозначает, что сначала наполняется колба B, потом реактив из колбы B переливается в колбу C, потом из колбы C выливается весь реактив.
Чем меньше реактива будет использовано для реализации вашего алгоритма, тем больше баллов вы получите.
Answers & Comments
Відповідь:
>С
С>В
В>
С>В
>А
А>В
В 6 остался 1 мл.
Расход 40 мл.
Пояснення:
>С - наливаем 35
С>В - переливаем 20
В> - выливаем все
С>В - наливаем 15 ( остаток )
>А - наливаем 6
А>В- переливаем 5 ( было 15 )
В 6 остался 1 мл.
Разход 35 + 5 = 40 мл.