Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей на питоне! но решить математически

abc Ученик (15), на голосовании 4 недели назад
На уроке зельеварения профессор Северус Снегг задал задачу: разделить оборотное зелье ровно пополам, не имея для этого весов, а используя только сосуды меньшего объема.

Оборотное зелье находится в сосуде A
объемом 20
унций и занимает его полностью. Имеется также два пустых сосуда: сосуд B
объемом 12
унций и сосуд C
объемом 7
унций.


Входные данные
На сосудах нет делений, поэтому в результате каждого переливания должно выполняться хотя бы одно из двух условий:

Один из сосудов, участвовавших в переливании, становится пустым;
Один из сосудов, участвовавших в переливании, становится полным.
Каждую команду переливания пишите так: сначала название сосуда откуда переливаем, потом знак «>
», и после название сосуда, куда переливаем.

Например, команда
A>B
означает, что переливание происходит из сосуда A
в сосуд B
.

Если изначально в сосуде A
было 20
унций, а сосуд B
был пустой, то в результате переливания A>B
сосуд B
станет полным, и в нем будет налито 12
унций зелья, а в сосуде A
останется 8
унций.

Если изначально в сосуде A
была 1
унция, а в сосуде C
– 7
унций, то в результате команды C>A
сосуд C
станет пустым, а в сосуде A
будет 8
унций зелья.

Составьте алгоритм переливаний, позволяющий получить в сосуде A
ровно 10
унций зелья. Каждую команду пишите в отдельной строке. Чем меньше команд получится в алгоритме, тем больше баллов он получит.

Каждую команду пишите в новой строке.

В построенном алгоритме не должно быть команд, которые:

пытаются сделать переливание из сосуда, который уже пуст;
выполняют переливание в сосуд, который уже полон.
Голосование за лучший ответ
GGG Просветленный (37487) 2 месяца назад
 A>B 
B>C
C>A
B>C
A>B
B>C
C>A
A>B
Переливаем из A в B до полного заполнения B.

A: 20 → 8 унций
B: 0 → 12 унций
C: 0 унций
B>C
Переливаем из B в C до полного заполнения C.

A: 8 унций
B: 12 → 5 унций
C: 0 → 7 унций
C>A
Переливаем из C обратно в A.

A: 8 → 15 унций
B: 5 унций
C: 7 → 0 унций
B>C
Переливаем из B в C до полного заполнения C.

A: 15 унций
B: 5 → 0 унций
C: 0 → 5 унций
A>B
Переливаем из A в B до полного заполнения B.

A: 15 → 3 унций
B: 0 → 12 унций
C: 5 унций
B>C
Переливаем из B в C до полного заполнения C.

A: 3 унций
B: 12 → 10 унций
C: 5 → 7 унций
C>A
Переливаем из C обратно в A.

A: 3 → 10 унций
B: 10 унций
C: 7 → 0 унций
В результате этих переливаний в сосуде A окажется ровно 10 унций зелья.

Итоговое состояние сосудов:
A: 10 унций
B: 10 унций
C: 0 унций
Рустам Абдрашитов Мыслитель (9542) 2 месяца назад
Чтобы получить ровно 10 унций зелья в сосуде A, можно воспользоваться следующими шагами, начиная с текущего состояния:
Состояние:
A: 10 унций
B: 0 унций
C: 0 унций
Минимальные шаги для достижения цели
Переливаем из A в B:
A: 10 унций → 8 унций
B: 0 унций → 2 унции
Переливаем из B в C:
B: 2 унции → 0 унций
C: 0 унций → 2 унции
Переливаем из C в B:
C: 2 унции → 0 унций
B: 0 унций → 2 унции
Переливаем из B в A:
B: 2 унции → 0 унций
A: 8 унций → 10 унций
Теперь в сосуде A снова ровно 10 унций зелья.
Итоговое состояние
A: 10 унций
B: 0 унций
C: 0 унций
Таким образом, для достижения цели вам потребуется всего 4 шага!
Похожие вопросы