[f(x) = egin{cases}
10 & x le 4 \
10 + 2(x-4) & 4 < x le 8 \
18 + 2.4(x-8) & x ge 8
end{cases}
]
如果(x le 4),那没什么好说的,铁定的(10)元。
如果(4 < x le 8),那么我们显然不会下车,下车后重新打车后又是起步价(10)元,而我们不下车则是每公里(2)元。
如果(x ge 8),那就有文章可做了,(4 sim 8)公里式每公里(2)元,而超过(8)公里后每公里(2.4)元。(实际上题目给的例子已经提示了)
对于超过(8)公里的部分,记(remain = x - 8)。
[10+2(remain-4) le 2.4*remain
]
解得:
[remain ge 5
]
故剩下距离一旦大于(5)时,我们重新打个车更划算,直至剩下距离小于(5),我们选择继续乘车。
double n;
int main()
{
while(cin>>n, fabs(n)>eps)
{
double res=0;
if(n <= 4) res=10;
else if(n <= 8) res=10+2*(n-4);
else
{
int cnt=n/8;
int remain=ceil(n-8*cnt);
res+=cnt*18;
if(remain <= 5) res+=remain*2.4;
else res+=10+2*(remain-4);
}
if(res == int(res)) printf("%.0f
",res);
else printf("%.1f
",res);
}
//system("pause");
return 0;
}