读题比较困难,这里我们来翻译一下:
描述:
ACM(一个航空组织。。。)的里程计划对经常飞行的旅客是非常好的。只要你完成了一次在ACM的飞行,根据你飞行的实际里程,你将会得到ACMPerk米的奖励放到你的ACM里程银行中。此外,你可以使用ACM里程银行中的ACMPerk里程去交换以后的免费的飞机票。
根据你的ACM飞行级别,你将会 得到:
一等F级别:飞行的实际里程+100%的里程奖励
商务B级别:飞行的实际里程+50%的里程奖励
经济Y级别:
1-500里程 :500里程
500里程+ :飞行的实际里程
这表示你的ACMPerk里程考虑两部分。一个是你的实际飞行里程(ACMPerk里程对于一次经济级别飞行最少是500m,也就是说你飞了不到500里程,也会给你500里程的ACMPerk),另一部分是当你乘坐商务级别或者一等级别时候的里程奖励(准确的说1里程奖励就是1m)。
举个例子:从北京到Tokyo的实际路程是 1329m。
如果是经济Y级别,将会得到1329m的AMCPerk。
如果是商务B级别,将会得到1329+132950%=1993.5=1994 --> 这里132950%得到.5要进一。(还是很大方的)
如果是一等F级别,将会得到1329+1329=2658。
再举个例子:从上海到武汉,实际路程是433m
Y:500
B:433+433/2+0.5
F:433+433
输入是多组样例,输出要输出飞机得到奖励的总和。所以思路很简单,直接计算每次得到奖励并相加就行。
#include<iostream>
#include<string>
using namespace std;
int main(){
string from,to,level;
int len;
float sum=0;
while(cin>>from){
if(from=="0")break;
cin>>to>>len>>level;
if(level=="Y"){
if(len<=500)sum+=500;
else sum+=len;
}else if(level=="B"){
if(len%2==0){
sum+=(len+len/2);
}else{
sum+=(len+len/2+1);
}
}else{
sum+=2*len;
}
}
cout<<sum<<endl;
return 0;
}


京公网安备 11010502036488号