Условия задачи: группа товарищей (численностью, предположим, до десяти человек) планирует провести совместную пьянку. В плане подготовки к ней, группа товарищей совершает набег на магазин, приобретая много продуктов и спиртных напитков. Дабы не создавать толпу у касс, расплачиваются за продукты только отдельные представители группы.
Дополнительное условие: известно, что не все люди собираются принимать участие в поглощении всего купленного (например, кто-то не пьет водку, кто-то не есть соленые огурцы, и т. п.).
Вопрос: как им потом, блин, расплатиться друг с другом?
Практическое решение выливается в три возможных сценария:
1. Если потраченные суммы небольшие, то расплата производится из общих соображений – кто сколько пожертвует. Но этот вариант не всегда подходит при больших мероприятиях с суровыми суммарными затратами.
2. Производится мощный забив на совместную покупку, и каждый покупает сам себе, чего хочет. Этот вариант не всегда технически осуществим и не всегда экономичен: обычно бутылку водки в литр емкостью на одно лицо не берут, а если взять три по триста на троих, то имеется существенный суммарный проигрыш по цене. С кока-колой – аналогично.
3. Совместная покупка таки осуществляется, после чего следуют долгие дебаты на тему: кто в чем участвует и кто кому чего должен. Потом производятся нетривиальные вычисления в уме и не менее долгая, нетривиальная расплата.
Адекватным решением задачи в теории предполагается следующее: пишется некая программа, в которую заносятся цены всех покупок и участие каждого товарища в потреблении каждого купленного продукта (не участвует/участвует и доля участия). Потом в программу заносится денежный взнос каждого участника при его расплате в кассе магазина.
Результатом работы программы является набор чисел. Положительные числа означают добавочный взнос в рублях каждого конкретного участника в «общий котел». Отрицательные – получение участником суммы из общего котла.
Нетрудно видеть, что такой способ расчета наиболее простой и быстрый, кроме того, он включает в себя, как частные случаи, перечисленные ранее три сценария.
Сама по себе задача не очень сложна по реализации, но довольно интересна в плане: «подумать над решением». Решать ее предлагается посредством Microsoft Excel. Мега-подсказка: задача решается без программирования, достаточно таблицы и использования функций в ее ячейках.
Тем, кому лень решать, но в хозяйстве иметь данную программу хочется, могу выслать результат собственного решения этой задачи.