Created
November 15, 2019 17:29
-
-
Save mariohuq/c28233a4569fe704129a726eb33b6315 to your computer and use it in GitHub Desktop.
Численное решение задачи из онлайн-курса Савватеева
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Численное решение задачи из онлайн-курса openedu.ru/course/mipt/MATAN/ | |
Трое друзей A, B, C хотят разделить между собой 1 литр некоторого напитка. | |
Проблема в том, что они умеют делить только пополам. | |
Поэтому поступают следующим образом. | |
Сначала весь напиток находится в кружке у A, а кружки у B и C пустые. | |
Затем половина содержимого кружки A поровну добавляется в кружки B и C. | |
После этого половина содержимого кружки B поровну добавляется в кружки A и C. | |
На следующем шаге половина содержимого кружки C поровну добавляется в кружки A и B. | |
И так далее, много раз: | |
половина содержимого очередной кружки | |
(по циклу: A, B, C, A, B, C, ...) | |
поровну добавляется в остальные кружки. | |
Введите количество напитка (в литрах) в каждой кружке в установившемся режиме, | |
в порядке возрастания (начиная с наименьшего количества и заканчивая наибольшим). | |
Записывать нужно в виде дроби: 1/2 или 5/2 или 2/4. | |
Пока что не требуется обоснование, просто дайте ответы. | |
""" | |
def step(a, b, c): | |
# половина содержимого кружки A поровну добавляется в кружки B и C. | |
a, b, c = a * 2, b * 4 + a, c * 4 + a | |
# половина содержимого кружки B поровну добавляется в кружки A и C. | |
a, b, c = a * 4 + b, b * 2, c * 4 + b | |
# половина содержимого кружки C поровну добавляется в кружки A и B. | |
a, b, c = a * 4 + c, b * 4 + c, c * 2 | |
return a, b, c | |
# Сначала весь напиток находится в кружке у A, а кружки у B и C пустые. | |
a, b, c = 1, 0, 0 | |
for i in range(1,20): | |
a, b, c = step(a, b, c) | |
s = a + b + c | |
print(*sorted([a/s, b/s, c/s]), sep='\n') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment