本文主要是介绍【题解】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;
}
这篇关于【题解】NowCoder BC64 牛牛的快递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!