7-1 出租车计价
分数 15
入门
作者 沈睿
单位 浙江大学
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
- 起步里程为3公里,起步费10元;
- 超起步里程后10公里内,每公里2元;
- 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
- 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
解题思路:
题目要求实现出租车计价的分段计数,体现在代码上即为使用if-else语句对里程范围和等待时间进行区间的区分和嵌套。
- 如果行驶距离小于或等于3公里,则收取10元的最低费用。如果乘车时间超过5分钟,则每5分钟额外收取2元的费用。
- 如果行驶距离在3公里到10公里之间(含),则首3公里收取10元的基本费用,之后每公里收取2元的额外费用。如果乘车时间超过5分钟,则每5分钟额外收取2元的费用。
- 如果行驶距离超过10公里,则首10公里收取24元的基本费用,之后每公里收取3元的额外费用。如果乘车时间超过5分钟,则每5分钟额外收取2元的费用。
需要特别注意的是,题目要求输出的最终结果为整型数据,并进行四舍五入。对于JAVA语言,可以使用Math包里自带的round方法进行四舍五入。或者自己写个条件判断语句进行四舍五入。
代码实现:
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
double miles = sc.nextDouble();
int time = sc.nextInt();
if(miles<=3){
if(time<5){
System.out.println("10");
}
else System.out.println(10+time/5*2);
}
else if(miles>3&&miles<=10){
if(time<5){
System.out.println(Math.round(10+(miles-3)*2));
}
else System.out.println(Math.round(10+(miles-3)*2+time/5*2));
}
else{
if(time<5){
System.out.println(Math.round(24+(miles-10)*3));
}
else System.out.println(Math.round(24+(miles-10)*3+time/5*2));
}
}
}