【题解】NowCoder BC64 牛牛的快递

简介: 【题解】NowCoder BC64 牛牛的快递

题目来源:牛客

BC64 牛牛的快递

题目描述:

牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费。

输入描述:

第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,‘y’ 表示加急 ,‘n’ 表示不加急。

输出描述:

输出牛牛总共要支付的快递费用。

示例1

输入: 1.5 y

输出: 26

示例2

输入: 0.7 n

输出: 20

解析

这题是个简单的模拟,分情况讨论即可。唯一需要注意的是,不足1kg 的部分要按 1kg 计算 ,说明要将重量向上取整。这里我给大家提供两个方法,①使用库函数 ceil() ,这个函数的作用是返回一个数向上取整的结果。位于 cmath 头文件里。②由于将浮点型数字强制类型转换为整形是向下取整,我们可以用不强制类型转换的浮点型数与强制类型转换后的数相减,大于 0 说明需要向上取整, +1 即可。

代码实现

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double a;
    char b;
    cin >> a >> b;
    int ans = 0;
    
    // 小于 1kg 的情况
    if (a <= 1)
    {
        ans = 20;
    }
    // 大于 1kg 的情况
    else
    {
      // 向上取整  20 + ceil(a) - 1;
        ans = ceil(a) + 19;
    // 另一种方法:
    /*
    if (a - (int)a > 0)
        {
            ans = 20 + (int)a - 1 + 1; 
        }
        else
        {
            ans = 20 + (int)a - 1;
        }
        */
    }
    
    // 加急则 +5 元
    if (b == 'y')
        ans += 5;
    cout << ans;
    return 0;
}
目录
相关文章
|
人工智能
华为机试HJ26:字符串排序
华为机试HJ26:字符串排序
|
算法
华为机试HJ14:字符串排序
华为机试HJ14:字符串排序
|
2月前
lanqiao OJ 1388 寒假作业
lanqiao OJ 1388 寒假作业
40 0
|
2月前
lanqiao OJ 389 摆花
lanqiao OJ 389 摆花
21 2
|
2月前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
15 0
|
2月前
lanqiao oj Frog
lanqiao oj Frog
25 0
|
2月前
lanqiao oj 1085 小猪存钱罐
lanqiao oj 1085 小猪存钱罐
30 0
|
2月前
lanqiao oj 1050 补给
lanqiao oj 1050 补给
40 0
|
2月前
lanqiao OJ 1217 求立方根
lanqiao OJ 1217 求立方根
17 0
|
2月前
lanqiao OJ 149 长草
lanqiao OJ 149 长草
12 0