读题比较困难,这里我们来翻译一下:
描述:
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; }