Что считает этот калькулятор
Инструмент рассчитан на Японию, где стоимость такси указывается в японских иенах, а при поездке в складчину суммы по традиции округляют вверх до ближайших 10 иен. Когда несколько человек едут в одном такси и выходят по очереди (сначала тот, кому ближе), счётчик продолжает накручивать сумму. Делить всю поездку поровну было бы несправедливо: те, кто вышел раньше, не ехали в более долгой и дорогой части пути. Этот калькулятор делит стоимость по участкам: каждый отрезок между двумя высадками оплачивают только те, кто в этот момент ещё находился в машине.
Как пользоваться
Укажите количество пассажиров (\(N\)) и показания счётчика нарастающим итогом на каждой высадке — от меньшего к большему, через запятую. Первое число — это сумма на счётчике, когда выходит первый пассажир; последнее — итоговая стоимость всей поездки. Например, для трёх пассажиров можно ввести 800,1500,2400.
Как работает формула
Пусть \(m_0 = 0\), а \(m_k\) — показания счётчика на \(k\)-й высадке. Стоимость участка \(k\) равна \(f_k = m_k - m_{k-1}\). На этом участке в машине остаётся \(N - k + 1\) человек, поэтому каждый платит \(\left\lceil \frac{f_k}{10 \times \text{число пассажиров}} \right\rceil \times 10\) — то есть стоимость участка делится на число едущих и округляется вверх до ближайших 10 иен. Из-за округления итоговая сумма может немного превысить счётчик, поэтому остаток берёт на себя последний пассажир: его платёж равен общей стоимости минус округлённые доли всех остальных. Так гарантируется, что сумма точно совпадёт с показаниями счётчика.
$$\text{Share}_j = \sum_{k=1}^{j} 10\left\lceil \frac{m_k - m_{k-1}}{\,N - k + 1\,} \right\rceil$$ $$\text{where}\quad \left\{ \begin{aligned} m_k &= \text{Meter at drop-off } k \text{ (yen)} \\ m_0 &= 0 \\ \text{leg } k &= m_k - m_{k-1} \text{ split among } N-k+1 \text{ riders} \end{aligned} \right.$$
Разбор на примере
Три пассажира, показания счётчика 800, 1500, 2400. Участок 1 (3 пассажира): \(800/3 = 266{,}67\), округляем вверх до 270 с каждого. Участок 2 (2 пассажира): \(700/2 = 350\) с каждого. Участок 3 (1 пассажир): 900. Предварительные итоги: \(P_1 = 270\), \(P_2 = 620\), \(P_3 = 1520\) (сумма 2410). Последний пассажир берёт на себя переплату в 10 иен: \(P_3 = 2400 - (270 + 620) = 1510\). Итог: \(P_1\) платит 270, \(P_2\) платит 620, \(P_3\) платит 1510, всего 2400.
Частые вопросы
Кто платит больше всех? Обычно тот, кто выходит последним: он едет на всех участках и вдобавок берёт на себя остаток от округления.
Почему округляем вверх до 10 иен? Японская наличность и этикет при оплате в складчину предполагают расчёт кратно 10 иенам; округление вверх избавляет от дробных иен и считается общепринятым.
Всегда ли это абсолютно справедливо? Метод исходит из того, что высадки идут по принципу «сначала ближайший». Если из-за объезда более ранняя остановка обходится дороже, пассажиры из середины могут немного переплатить — это неизбежная особенность равного деления по участкам.