【题解】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;
}
目录
相关文章
|
3天前
【题解】NowCoder BC153 [NOIP2010]数字统计
【题解】NowCoder BC153 [NOIP2010]数字统计
11 6
|
3天前
|
存储 人工智能
【题解】NowCoder 除2!
【题解】NowCoder 除2!
7 0
|
8月前
|
容器
华为机试HJ102:字符统计
华为机试HJ102:字符统计
|
8月前
华为机试HJ88:扑克牌大小
华为机试HJ88:扑克牌大小
|
8月前
|
测试技术
华为机试HJ85:最长回文子串
华为机试HJ85:最长回文子串
|
8月前
|
存储
华为机试HJ43:迷宫问题
华为机试HJ43:迷宫问题
|
8月前
华为机试HJ11:数字颠倒
华为机试HJ11:数字颠倒
|
8月前
|
机器学习/深度学习
华为机试HJ35:蛇形矩阵
华为机试HJ35:蛇形矩阵
|
9月前
|
C++
洛谷P1055 ISBN号码(C++解法)
洛谷P1055 ISBN号码(C++解法)
122 0
|
人工智能 测试技术
贪心: [蓝桥杯 2020 国 ABC] 答疑
贪心: [蓝桥杯 2020 国 ABC] 答疑
60 0