這個計算機能幫你做什麼
朋友相約出遊時,常常是一個人先刷了飯店、另一個人付加油錢、還有一個人請了大家吃晚餐。等到旅程結束,誰墊了多少、誰又該補多少,往往是一筆糊塗帳。這款團體旅遊費用分攤計算機會把所有人的支出加總起來,再平均分攤給每個人,最後幫你算出最簡單的轉帳方式,讓大家最終實際負擔的金額完全一樣。
使用方法
先設定團體的人數,接著輸入每個人實際為共同開銷付了多少錢。沒有付錢的人就維持 0 即可。按下計算後,你會看到每人應分攤的金額、整趟旅程的總花費,以及一份轉帳清單——例如「A 付給 B $X」——用最少的轉帳次數讓所有人一次結清。
計算公式解析
首先算出每個人應該分攤的金額:每人分攤 = 總支出 ÷ 人數。接著計算每個人的差額:差額 = 個人實付金額 − 應分攤金額。差額為正,代表這個人付多了,別人要還他錢;差額為負,代表付少了,要補錢給別人。系統採用貪婪配對演算法,不斷讓「欠最多的人」付錢給「被欠最多的人」,直到所有人的差額都歸零,藉此把轉帳次數壓到最低。
$$\text{Share} = \frac{\text{Total}}{\text{People}}, \qquad \text{Balance}_i = \text{Paid}_i - \text{Share}$$$$\text{where}\quad \left\{ \begin{aligned} \text{Total} &= \text{P1} + \text{P2} + \text{P3} + \text{P4} + \text{P5} + \text{P6} \\ \text{Balance}_i &> 0 \Rightarrow \text{is owed}, \quad \text{Balance}_i < 0 \Rightarrow \text{owes} \end{aligned} \right.$$
實際範例
三個好友一起出遊。第 1 位付了 $120、第 2 位付了 $30、第 3 位付了 $0。總共 $150,所以每人應分攤 $50。三人的差額分別是 +$70、−$20、−$50。於是第 3 位付給第 1 位 $50、第 2 位付給第 1 位 $20——這樣一來,每個人實際上都剛好負擔了 $50。
$$\text{Share} = \frac{150}{3} = 50$$$$\text{Balance}_1 = 120 - 50 = +70, \quad \text{Balance}_2 = 30 - 50 = -20, \quad \text{Balance}_3 = 0 - 50 = -50$$
常見問題
這個計算機可以不平均分攤嗎?不行——這個版本是把總花費平均分給每個人,每個人最後負擔的金額都相同。
它使用哪一種貨幣?計算機不限定特定貨幣,只要每一筆輸入都使用同一種幣別即可(例如全部用新台幣或全部用美元)。
為什麼要把轉帳次數降到最低?轉帳越少,大家越省事。貪婪演算法會讓被欠最多的人與欠最多的人優先配對,盡量減少金錢轉手的次數。