T. Мухи отдельно, котлеты отдельно

Вернёмся в магазин, хозяин которого уже привык полагаться на всемогущую автоматизацию.

Помогите ему разобраться с одной проблемой. Далее его история: “Пару дней назад я купил две партии котлет и по случайности высыпал их на один прилавок. Общий вес котлет составил 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

Посмотреть код

Решение.

Python
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)
Подписаться
Уведомить о
guest
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Дмитрий
Дмитрий
30.06.2024 12:20

Выходит что продавец продал товар по закупочной цене. И ничего не заработал.
Я не математик, и эта задачка, как же подсчитать % маржи, не давала мне решить уравнение.

Последний раз редактировалось 5 месяцев назад Дмитрий ем