この計算機でできること
友達同士で旅行に行くと、ホテルはAさんが予約し、ガソリン代はBさん、夕食はCさんが払う……といったように、立替えがバラバラになりがちです。旅行が終わるころには「結局、誰が誰にいくら払えばいいの?」と分からなくなってしまうもの。このグループ旅行 割り勘計算機は、全員の支払い額を合計し、人数で均等に割って、最も少ない回数で全員の負担が同じになる送金プランを自動で算出します。
使い方
まずグループの人数を設定し、各自が共通の費用として実際に支払った金額を入力します。何も払っていない人は0のままでOKです。「計算する」を押すと、1人あたりの均等負担額、旅行の合計費用、そして「AさんがBさんに○○円払う」という精算リストが表示されます。やり取りの回数が最小になるよう調整されているので、清算がとてもスムーズです。
計算式の仕組み
まず1人あたりの公平な負担額を求めます。1人あたりの負担額 = 支払い合計 ÷ 人数。次に各自の収支を計算します。収支 = その人が払った額 − 1人あたりの負担額。収支がプラスなら払いすぎ(受け取る側)、マイナスなら払い足りない(支払う側)です。あとは貪欲(グリーディ)法というアルゴリズムが、最も多く受け取るべき人と最も多く払うべき人を順にマッチングしていき、全員の収支がゼロになるまで送金を割り振ります。これにより送金回数を最小限に抑えられます。
$$\text{1人あたりの負担額} = \frac{\text{支払い合計}}{\text{人数}}, \qquad \text{収支}_i = \text{支払い額}_i - \text{1人あたりの負担額}$$
具体例
3人で旅行に出かけたとします。1人目は120ドル、2人目は30ドル、3人目は0ドルを支払いました。合計は150ドルなので、1人あたりの負担は50ドル。各自の収支は+70ドル、−20ドル、−50ドルとなります。そこで、3人目が1人目に50ドル、2人目が1人目に20ドルを支払えば、全員が実質50ドルずつ負担したことになり、きれいに清算が完了します。
$$\text{1人あたりの負担額} = \frac{120 + 30 + 0}{3} = \frac{150}{3} = 50$$
よくある質問
金額に差をつけて割り勘できますか? いいえ。このバージョンは合計費用を全員で均等に割ります。最終的に全員の負担額が同じになります。
通貨は何に対応していますか? 特定の通貨に縛られません。すべての入力を同じ通貨でそろえて使ってください(日本円でも米ドルでもOKです)。
なぜ送金回数を最小化するのですか? 支払いの回数が少ないほど手間が減るからです。グリーディ法は「最も多く受け取る人」と「最も多く払う人」をマッチングし、お金のやり取りの回数をできるだけ減らします。