Вернёмся в магазин, хозяин которого уже привык полагаться на всемогущую автоматизацию.
Помогите ему разобраться с одной проблемой. Далее его история: “Пару дней назад я купил две партии котлет и по случайности высыпал их на один прилавок. Общий вес котлет составил N килограмм, а ценник — M рублей за килограмм.
Сегодня я обнаружил, что накладные на эти виды котлет потерялись, но я помню, что первый вид котлет стоил K1 рублей за килограмм, а второй — K2.
Помогите мне вспомнить вес каждой партии котлет, чтобы поставить их на учёт.”
Формат ввода
В первой строке записано натуральное число N
Во второй строке — натуральное число M
В третьей строке — натуральное число K1
В четвёртой строке — натуральное число K2
Причём доподлинно известно, что второй вид котлет стоит меньше, чем первый.
Формат вывода:
Два натуральных числа, записанных через пробел — вес обеих партий котлет.
Пример
Ввод
32
285
300
240
Вывод
24 8
Решение
Задача на школьную математику. Нужно построить систему линейных уравнений и запрограммировать ее.
В общем случае рассуждения могут выглядеть так:
X + Y = N
Y = N - X
(K1*X + K2*Y)/N = M
K1*X + K2*Y = M*N
K1*X + K2*(N - X) = M*N
K1*X + K2*N - K2*X = M*N
K1*X - K2*X = M*N - K2*N
X(K1 - K2) = M*N - K2*N
X = (M - K2) * N / (K1 - K2)
Одна из возможных проблем, свзяанных с задачей – попытка использовать оператор целочисленного деления на последних этапах вычислений вместо конструкции деления с дальнейшим приведением к типу int. Связано это с особенностями целочисленных округлений в языке python. Дело в том, что при целочисленном делении python всегда округляет число к минимальному значению, а функция int() отбрасывает дробную часть. Поэтому при делении с участием одного отрицательного элемента ответ всегда будет получаться разным:
int(-2 / 10) = 0, в то время как -2 // 10 = -1
Посмотреть код
Решение.
total_weight = int(input())
total_price = int(input())
price_1 = int(input())
price_2 = int(input())
weight_1 = int((total_price - price_2) * total_weight / (price_1 - price_2))
weight_2 = int(total_weight - weight_1)
print(weight_1, weight_2)
Выходит что продавец продал товар по закупочной цене. И ничего не заработал.
Я не математик, и эта задачка, как же подсчитать % маржи, не давала мне решить уравнение.
В истории сказано, что это закупочная цена и хозяин магазина просто не помнит сколько каких взял. 🙂
На самом деле все мы иногда читаем не то, что написано.