湖北民族学院oj 1691(贪心) 之 出租车费

xiaoxiao2021-02-28  110

题目描述

某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。 一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。 例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。 现在给你整个行程的公里数,请你计算坐出租车的最小花费。

输入描述

输入包含多组测试数据。每组输入一个正整数n(n<10000000),表示整个行程的公里数。 当n=0时,输入结束。

输出描述

对于每组输入,输出最小花费。如果需要的话,保留一位小数。

输入样例

3 9 16 0

输出样例

10 20.4

36

AC代码如下:

#include <iostream> #include <cstdio> #include <cmath> using namespace std; double a[]={0,2.4,2.4*2,2.4*3,2.4*4,12,14,16,18}; int main() { int n; double ans; while(scanf("%d",&n)!=EOF && n) { ans=0.0; if(n<=4) ans=10; else if(n<=8) { ans=10+(n-4)*2; } else { int num=n/8; n%=8; ans=num*18+a[n]; } if(fabs(ans-(int)ans)<=1e-8) printf("%.0lf\n",ans); else printf("%.1lf\n",ans); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-26502.html

最新回复(0)