读题比较困难,这里我们来翻译一下:
图片说明

描述:
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;
}