Форум сайта python.su
0
Сегодня на уроках информатики пятиклассники разбирали классическую задачу о переливаниях и бла-бла-бла,если переходить сразу к делу,дан алгоритм:
1 - наполнить до краёв сосуд объемом a литров;
2 - наполнить до краёв сосуд объемом b литров;
3 - перелить воду из сосуда объемом b в сосуд объемом a литров;
4 - перелить воду из сосуда объемом a в сосуд объемом b литров;
5 - опорожнить сосуд объемом a литров;
6 - опорожнить сосуд объемом b литров.
Формат входных данных
В первой строке записаны два числа a и b (2 <= a, b <= 1000) -объемы сосудов. Во второй строке записан алгоритм в виде последовательности номеров выполняемых команд без пробелов между номерами - количество команд. Общее число команд не превышает 255.
Формат выходных данных:
Требуется вывести два числа: сначала объем жидкости,находящийся после переливаний в сосуде объемом a литров,а затем - в сосуде b литров.
Пример входного файла
5 8
24
Пример выходных данных
5 3
Товарищи опытные,помогите исправить ошибку. Написал код,но для 3 пункт алгоритма у меня не получается составить формулу. Заранее спасибо.
from os import system from math import fabs import sys a, b = map(int, input().split()) if a < 2 or b > 1000: print ('Введённые значения некорректны'), sys.exit() c = list(map(int,input(""))) if c < [7,8,9]: for i in range(len(c)): if c[i] == 1: a1 = a if b1 != b: b1 = b1 else: b1 = 0 if c[i] == 2: a1 = 0 b1 = b if c[i] == 3: b1 = (b - b1) - (b - a) a1 = a - b1 if c[i] == 4: a1 = a b1 = b - a if c[i] == 5: a1 = a - a b1 = b if c[i] == 6: a1 = a1 b1 = b - b else: print('Введённое значение некорректно'), sys.exit() print(a1,b1)
Офлайн
0
Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??
Тоже и с пунктом 4
Офлайн
294
longdarknesвы и первых два не сделали. У вас “исполнитель водолей” должен уметь:
Написал код,но для 3 пункт алгоритма у меня не получается составить формулу. Заранее спасибо.
1 - наполнить до краёв сосуд объемом a литров;следовательно сначала вы должны гдето хранить обьемы:
2 - наполнить до краёв сосуд объемом b литров;
3 - перелить воду из сосуда объемом b в сосуд объемом a литров;
4 - перелить воду из сосуда объемом a в сосуд объемом b литров;
5 - опорожнить сосуд объемом a литров;
6 - опорожнить сосуд объемом b литров.
c = list(map(int,input(""))) a_max = a # объем сосуда а a_cur = 0 # сколько воды сейчас в сосуде b_max = a # объем сосуда b b_cur= 0 # сколько воды сейчас в сосуде
if c[i] == 1: a_cur = a_max
if c[i] == 5:
a_cur = 0
if c[i] == 4: if a_cur <= (b_max - b_cur): #есди в а меньше или равно чем влезет в b a_cur = 0 b_cur = b_cur + a_cur else: # если в а больше чем влезет в b a_cur = a_cur - (b_max - b_cur) b_cur = b_max
if c < [7,8,9]:
also1это не последовательность,действий, это комманды котороые может выполнять “исполнитель”
Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??Тоже и с пунктом 4
[code python][/code]
Отредактировано PEHDOM (Окт. 19, 2020 12:05:34)
Офлайн