В походе пять туристов набрали 20-литровую канистру земляники, и теперь хотят разделить ягоды между собой поровну. В их лагере есть кастрюли объёмом в 3, 5, 6, 7 и 30 литров. Разрешается пересыпать землянику из одной посудины в другую, пока в первой не кончится земляника или второй сосуд не заполнится целиком. Как только в какой-то ёмкости оказывается ровно 4 литра земляники, её хватает один из туристов и убегает есть (больше этот сосуд использовать нельзя). От вас требуется составить как можно более короткий алгоритм действий туристов, чтобы в результате в пяти ёмкостях оказалось по 4 литра земляники. Обозначим сосуды в 3, 5, 6, 7, 20 и 30 литров буквами A, B, C, D, E и F соответственно (изначально вся земляника находится в сосуде E). Для записи алгоритма используются команды вида X>Y (вместо X и Y должны быть два различных символа из A, B, C, D, E, F), которые означают, что из сосуда X происходит пересыпание земляники в сосуд Y. Команды записываются по одной в строке. Например, следующая последовательность команд
E>C
E>B
C>A
обозначает, что сначала из 20-литровой канистры пересыпаются 6 и 5 литров в кастрюли соответствующего объёма, а затем из 6-литровой 3 литра отсыпается в самую маленькую кастрюлю. То есть, распределение земляники после такой последовательности команд будет иметь вид 3, 5, 3, 0, 9, 0 по всем шести ёмкостям.
Чем меньше шагов будет в вашем алгоритме, тем больше вы получите. Частично правильный ответ будет зачтен, если вы сможете отмерить 4 литра земляники не для всех туристов, а только для части из них. Ещё раз подчеркнём условие, что после того, как в какой-то ёмкости оказывается ровно 4 литра земляники, пользоваться ей больше нельзя.
РЕШИТЬ НА ПИТОНЕ!!
Можно либо циклы в общем цикле (коротко и красиво):
использовать Робот
алг
нач
нц пока снизу свободно
вниз
нц пока справа свободно
вправо
кц
нц пока снизу свободно
вниз
кц
нц пока слева свободно
влево
кц
кц
кон
То же самое ещё понятнее и короче выглядит, если малые циклы в строчку записать:
использовать Робот
алг
нач
нц пока снизу свободно
вниз
нц пока справа свободно; вправо кц
нц пока снизу свободно; вниз кц
нц пока слева свободно; влево кц
кц
кон
Либо просто несколько циклов друг за другом (длинно и уныло):
использовать Робот
алг
нач
нц пока справа свободно
вправо
кц
нц пока снизу свободно
вниз
кц
нц пока слева свободно
влево
кц
вниз
нц пока справа свободно
вправо
кц
нц пока снизу свободно
вниз
кц
нц пока слева свободно
влево
кц
кон
n = int(input('Число секунд с начала суток: '))
h = n // 3600
n = n % 3600
m = n // 60
s = n % 60
sh = str(h)
sm = str(m)
if len(sm)<2:
sm = "0"+sm
ss = str(s)
if len(ss)<2:
ss = "0"+ss
print(sh,':',sm,':',ss)
Тест №1
Число секунд с начала суток: 7200
2 : 00 : 00
Тест №2
Число секунд с начала суток: 75201
20 : 53 : 21