羊城通薅羊毛6折公交演算法

2022-03-15 10:21:34 字數 2593 閱讀 7246

本碼農每天地鐵通勤上下班,按平均計算每月需要上班的工作日為22天,即需要刷地鐵44次。

每月刷公交前15次按票價95折計算,最低票價為2元

每月刷公交滿15次後按票價6折計算

每月優惠清零。即每個月都需要刷15次後才有6折優惠

如果我每月初先按最低的2元票價刷滿15次,接下來上下班通勤就都有6折了,這樣能不能省下點~.... [手動dog]

public class main 

/*** 計算最低成本方案

** @param numberofridesrequired 通勤次數

* @param normalfare 通勤票價

* @return

*/private static double getmosteconomicalsolution(integer numberofridesrequired, integer normalfare) else }}

double normatotal = normalmetrofarecalculation(numberofridesrequired, normalfare);

if (bastface < normatotal) else

return bastface;

}/**

* 計算先按最低票價2元刷次數以及通勤的總費用

** @param numberofridesrequired 通勤次數

* @param normalfare 通勤票價

* @param operatingcount 低價刷次數

* @return

*/private static double operatingmetrofarecalculation(integer numberofridesrequired, integer normalfare, integer operatingcount) else

}/**

* 計算正常通勤總費用

** @param numberofridesrequired 通勤次數

* @param normalfare 通勤票價

* @return

*/private static double normalmetrofarecalculation(integer numberofridesrequired, integer normalfare) else }}

按44次通勤,票價5元計算

按44次通勤,票價6元計算

按44次通勤,票價7元計算

按15次通勤,票價6元計算

設差價為n,通勤次數為x,通勤單價為y,低價先刷卡操作次數為z,

設正常通勤總費用為o,操作後通勤總費用為p

方案a:當通勤次數 x > 15 時,
o=15×0.95y+(x-15)×0.6y=14.25y+0.6xy-9y=5.25y+0.6xy ,

p=2×0.95z+(15-z)×0.95y+(x-(15-z))×0.6y=1.9z+14.25y-0.95zy+0.6xy-9y+0.6zy=1.9z+0.6xy+5.25y-0.35zy ,

則 n=o-p

=5.25y+0.6xy-(1.9z+0.6xy+5.25y-0.35zy)

=0.35zy-1.9z

=(0.35y-1.9)×z

由此可得

差價與通勤次數x無關,差價由通勤單價y 以及刷卡操作次數z決定,當通勤單價y滿足條件 0.35y-1.9 ≦ 0 時,即 y ≦ 5.428元時,差價小於等於零。

當通勤單價高於5.428元時,低價先刷卡操作次數越多越好,即直接刷滿15次即可。

方案b:當通勤次數 x ≦ 15 ,且 x > 15-z 時 (略)

方案b:當通勤次數 x ≦ 15 ,且 x <= 15-z 時 (略)

通勤單價如果少於5.428元錢就不划算了,不用考慮

當通勤單價高於5.428元時,低價先刷卡操作次數越多越好,即直接刷滿15次即可。

好吧~其實吧...也省不了多少錢,還是多搞幾個bug吧

Huawei Pay喊你來領免費羊城通

huawei pay羊城通便民服務 吸卡 黑科技上線後,輕輕一碰,實體羊城通卡將被吸進你的華為手機中,變身為手機羊城通,刷華為手機就能搭乘公交地鐵,便捷出行。針對該黑科技功www.cppcns.com能,華為聯合了羊城通公司推出了免費體驗活動 即日起至7月31日,在華為錢包中通過保留實體卡的吸卡方式...