Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 19, 2020 07:32:11

longdarknes
Зарегистрирован: 2020-10-18
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Переливания

Сегодня на уроках информатики пятиклассники разбирали классическую задачу о переливаниях и бла-бла-бла,если переходить сразу к делу,дан алгоритм:
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)

Офлайн

#2 Окт. 19, 2020 10:04:17

also1
Зарегистрирован: 2019-12-06
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Переливания

Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??
Тоже и с пунктом 4

Офлайн

#3 Окт. 19, 2020 11:27:01

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Переливания

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      # сколько воды сейчас в сосуде
потом “1 наполнить до краёв сосуд объемом a литров;(из крана)” должно выглядеть вот так:
         if c[i] == 1:
            a_cur = a_max
“5 - опорожнить сосуд объемом a литров;”:
         
        if c[i] == 5:
            a_cur = 0

“4 - перелить воду из сосуда объемом a в сосуд объемом b литров;”
         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
для b по аналогии

а
if c < [7,8,9]:
вообще феерично, так списки не сравнивают.


also1
Пункт 3: как можно перелить из b в а, если согласно пункта 1, сосуд а заполнен до краев??Тоже и с пунктом 4
это не последовательность,действий, это комманды котороые может выполнять “исполнитель”



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 19, 2020 12:05:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version