题目描述
上海市的出租车计价规则是这样的:不考虑延时等待的问题,起步费为11元,可以行驶3公里;接下来的7公里,每公里为2元;如果路途总距离超过10公里,则剩余的路程为每公里3元。不到1公里时,按照1公里计算(本题全部为整数,不存在小数)。
有一些精明的乘客发现,可以采用适当的中途换车策略来节省费用。比如路程一共有26公里,则可以分为三段,乘完10公里花费25元;然后下车换一辆再乘10公里,又花费25元;再次下车换一辆乘最后6公里花费17元,则总共花费67元;而如果一直不换车,直接按照计费规则,则需要73元。
现在给你一个路程的长度(总是>=0),请计算最少的车费是多少。
输入输出格式
输入格式
一个整数,表示公里数。
输出格式
一个整数,表示乘车费用,保证数据不超过int类型。
输入输出样例
输入样例1
2
输出样例1
11
输入样例2
12
输出样例2
31
输入样例3
0
输出样例3
0
说明
样例1
2公里,仍在起步费范围内
样例2
不能换车
样例3
未乘车,不用付费
题解
水题~
总共13行代码~
只要理解内涵并if else灵活运用就可以了~
下面给出两行核心代码,准确来说是难想代码~
(唯一缺点就是代码骚气了点~)
(闲得没事干,非要写得精简一点~)
核心代码
第10~11行:
else if(n%10<=5)printf("%d",n/10*25+(n%10)*3);
else printf("%d",n/10*25+2*(n%10)+5);
可以在我的资源中找到全部代码以及详细注释哦~