【POJ】Mileage Bank(floor()函数的应用)

Posted on 2018-04-20 20:40  som_nico  阅读(172)  评论(0编辑  收藏  举报

Mileage Bank

http://poj.org/problem?id=1326

题意:输入起始地点和终止地点(没有用) 输入里程  输入舱位  

航舱分 F B Y 

F  Actual mileage + 100% mileage Bonus

B  Actual mileage + 50% mileage Bonus

Y  1-500 miles          500 miles

 500+ miles       Actual mileage

输出最后的里程数(四舍五入)

思路:因为题里要求要四舍五入,用floor( m + 0.5); floor(double m)是取不大于m的最大整数,那么+0.5就是四舍五入的意思了。

#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
    string o, d;
    double m;
    char x;
    while(1)
    {
        cin >> o;
        if(o[0] == '#') break;
        int sum = 0;
        while(cin >> d >> m >> x)
        {
            if(x == 'F') sum += (m * 2);
            if(x == 'Y')
            {
                if(m >= 1 && m <= 500) sum += 500;
                else sum += m;
            }
            if(x == 'B')
            {
                sum += floor( m * 1.5 + 0.5);
            }
            cin >> o;
            if(o[0] == '0')
            {
                cout << sum << endl;
                sum = 0;
                break;
            }



        }
    }
    return 0;
}