高级守护
2700 计价器
庐阳区2012年信息学竞赛试题
题目描述 Description
根据合肥市物价局公布的合肥出租车运价新方案,取消征收临时燃油附加费,起步基价分别调为8元∕2.5公里(排量2.0升以下),9元∕2.5公里(排量2.0升及以上)。同时,公里租价提高到1.40元每公里,空贴费启动标准从现在的10公里以上提高到15公里,即超过15公里,每公里按2.1元计算。不考虑等时费等因素。请你为出租车的计价器编写计费程序。
输入描述 Input Description
两个数X, S,X为1表示出租车的排量在2.0以下,X为2表示出租车的排量2.0及以上;S为小数,表示行驶里程。
输出描述 Output Description
一个整数,表示费用,四舍五入取整。
样例输入 Sample Input
1 10.0
样例输出 Sample Output
19
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int x;
double s;
int main(){
cin>>x>>s;
if(x==1){
if(s<=2.5) cout<<int(8+0.5);
if(s>8){
if(s<=15) cout<<int(8+(s*1.40)+0.5);
else cout<<int(8+(s*2.1)+0.5);
}
}else if(x==2){
if(s<=2.5) cout<<int(9+0.5);
if(s>8){
if(s<=15) cout<<int(9+(s*1.40)+0.5);
else cout<<int(9+(s*2.1)+0.5);
}
}
return 0;
}
李伟宸在2022-04-04 14:32:32追加了内容
谁先发我就先采纳谁
谁先发我就先采纳谁
谁先发我就先采纳谁
(重要的事情说三遍)喵~~~
高级光能
emmm.....
有点小水.....
这一题是分段收费,我也是做了7遍才过....
有点复杂。
进入正题:
两个大的if中,x==2.5时,直接输出8和9。
emmm,给你个建议,不要每次if里面都直接输出,可以定义一个double的s1来算值,算完之后再printf("%d",(int)(........));
这样会方便一些。
第一个大if{
当s<=15时,s1=8+(s-2.5)*1.4;
然后else{s1=(s-15)*2.1+8+12.5*1.4; ......... }
}
第二个大if只要把8改成9就行了,其他都一样。
甄子烨在2022-04-14 19:56:50追加了内容
求采纳啊~!!!