1996 - 涨价了
时间限制 : 1 秒
内存限制 : 32 MB
小明所在的城市的出租车价又涨了。
涨价之前,出租车的起步价为10元,可行驶3到公里。3公里后,每公里加2元,可行驶到10公里。10公里后,每公里加3元。等待费是每5分钟2元。乘客还需付1元的燃油费。
涨价之后,出租车的起步价为11元,可行驶3到公里。3公里后,每公里加2.5元,可行驶到10公里。10公里后,每公里加3.75元。等待费是每4分钟2.5元。无燃油费。
实际上,最后的车费是四舍五入到元的。现在问你,当小明坐出租车行驶了d公里,并且等待了t分钟,与涨价之前相比,小明现在要多花多少钱?
题目输入
输入的第一行是一个整数T,表示有T组测试数据。
每组输入两个整数d(1<=d<=1000)和t(0<=t<=300)。
题目输出
对于每组输入,输出要求的结果。
输入/输出样例
输入格式
4 2 0 5 2 7 3 11 4
输出格式
0 1 3 5
C语言解答
#include<stdio.h> int f(double d,double t) { double sum=t/5.0*2.0+1; if(d>=10) sum=sum+10+14+3*(d-10); else if(d>=3) sum=sum+10+2*(d-3); else sum+=10; if(sum-(int)sum>=0.5) return (int)sum+1; else return (int)sum; } int g(double d,double t) { double sum=t*2.5/4; if(d>=10) sum=sum+11+2.5*7+3.75*(d-10); else if(d>=3) sum=sum+11+2.5*(d-3); else sum+=11; if(sum-(int)sum>=0.5) return (int)sum+1; else return (int)sum; } int main() { int d,t,n; scanf("%d",&n); while(n--) { scanf("%d%d",&d,&t); printf("%d\n",g((double)d,(double)t)-f((double)d,(double)t)); } return 0; }
C++解答
#include <stdio.h> int main() { int T, d, t, x, y; double a, b; scanf("%d", &T); while (T--) { scanf("%d%d", &d, &t); a = 11; if (d - 3 > 0) { if (d - 10 > 0) a += 14 + 3 * (d - 10); else a += 2 * (d - 3); } a += t / 5.0 * 2; x = a + 0.5; b = 11; if (d - 3 > 0) { if (d - 10 > 0) b += 17.5 + 3.75 * (d - 10); else b += 2.5 * (d - 3); } b += t / 4.0 * 2.5; y = b + 0.5; printf("%d\n", y - x); } return 0; }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); for (int i = 0; i < n; i++) { int d = in.nextInt(); int t = in.nextInt(); System.out.println(after(d,t)-before(d, t)); } } static int before(int d, int t) { int per; double sum=1; if (d<=3) { sum+=10; }else if (d<=10) { sum+=10; per = 2; int temp = d-3; sum+=(per*temp); }else if(d>10){ per = 3; int temp = d-10; sum+=10; sum+=7*2; sum+=per*temp; } double wait = t*0.4; sum+=wait; return cast(sum); } static int after(int d, int t){ double per; double sum=0; if (d<=3) { sum+=11; }else if (d<=10) { per = 2.5; int temp = d-3; sum+=11; sum+=per*temp; }else if(d>10){ per = 3.75; int temp = d-10; sum+=11; sum+=7*2.5; sum+=per*temp; } double wait = t*2.5/4; sum+=wait; return cast(sum); } static int cast(double d){ int id = (int) d; int res = (d-id)>=0.5?id+1:id; return res; } }