2025年12月GESP(C++一级): 小杨的爱心快递
题目描述
小杨是“爱心社区”的小志愿者,每周他都会帮助邻居们寄送捐赠给山区小学的文具和书籍。快递公司为了支持公益行动,制定了特殊的运费规则,鼓励大家合理包装:
假设快递的体积为V VV,重量为G GG。
- 按体积计算:运费按体积计算,公式是0.5 × V 0.5 \times V0.5×V元。
- 按重量计算:为了鼓励减轻包裹重量,规则是:当重量小于 300 克,即G < 300 G < 300G<300时,运费为M MM元;当重量达到或超过 300 克,即G ≥ 300 G \geq 300G≥300时,运费为N NN元。
快递公司的叔叔说:“我们应该选择最公平合理的计费方式。”
所以,最终的运费会取按体积计算和按重量计算这两种方式中价格较低的那一个,这样对寄件人最公道。
输入格式
四行,每行一个一位小数的浮点数,分别代表,快递的体积V VV,快递的重量G GG,第一档重量运费M MM,第二档重量运费N NN。
输出格式
一行一个一位小数,代表实际快递运费。
输入输出样例 1
输入 1
100.4 300.2 60.6 70.5输出 1
50.2输入输出样例 2
输入 2
99.8 200.9 60.2 70.1输出 2
49.9说明/提示
样例解释
对于样例 1:快递体积V VV为100.4 100.4100.4,重量G GG为300.2 300.2300.2,第一档重量运费M MM为60.6 60.660.6,第二档重量运费N NN为70.5 70.570.5。
- 若按体积收费,费用为0.5 × 100.4 = 50.2 0.5 \times 100.4 = 50.20.5×100.4=50.2;
- 若按重量收费,由于重量G = 300.2 G = 300.2G=300.2超过300 300300,费用为70.5 70.570.5。
输出价格较低的50.2 50.250.2。
对于样例 2:快递体积V VV为99.8 99.899.8,重量G GG为200.9 200.9200.9,第一档重量运费M MM为60.2 60.260.2,第二档重量运费N NN为70.1 70.170.1。
- 若按体积收费,费用为0.5 × 99.8 = 49.9 0.5 \times 99.8 = 49.90.5×99.8=49.9;
- 若按重量收费,由于重量G = 200.9 G = 200.9G=200.9小于300 300300,费用为60.2 60.260.2。
输出价格较低的49.9 49.949.9。
数据范围
对于所有测试点,保证给出的浮点数均为正数,且不超过1000 10001000。
思路分析
这道题考察的是条件判断和数值比较的基本能力。题目给出了两种计算运费的方式:
- 按体积计算:固定公式
0.5 × V - 按重量计算:根据重量是否达到300克分为两档
实际运费需要取这两种计算方式中的较小值。
解题步骤:
- 读取输入的四个浮点数:体积V、重量G、第一档运费M、第二档运费N
- 计算体积运费
p1 = 0.5 * V - 根据重量判断计算重量运费:
- 如果
G < 300,则p2 = M - 如果
G >= 300,则p2 = N
- 如果
- 取
p1和p2中的较小值作为最终运费 - 输出结果,保留一位小数
代码实现
#include<bits/stdc++.h>usingnamespacestd;// 定义变量:体积v、重量g、第一档运费m、第二档运费ndoublev,g,m,n;intmain(){// 输入数据:体积、重量、第一档运费、第二档运费cin>>v>>g>>m>>n;doublep1,p2;// p1:体积运费, p2:重量运费// 计算体积运费:0.5 * 体积p1=0.5*v;// 根据重量计算重量运费if(g<300)// 重量小于300克,使用第一档运费p2=m;else// 重量大于等于300克,使用第二档运费p2=n;// 取两种运费中的较小值作为最终运费doubleans=min(p1,p2);// 输出结果,保留一位小数cout<<fixed<<setprecision(1)<<ans;return0;// 程序正常结束}功能分析
1.输入处理
- 程序依次读取四个浮点数:体积V、重量G、第一档运费M、第二档运费N
- 所有输入都是一位小数的浮点数
2.运费计算逻辑
- 体积运费:固定为
0.5 × V,线性关系 - 重量运费:分段函数
- 当
G < 300时,运费为M - 当
G >= 300时,运费为N
- 当
- 最终运费:取两种计算方式的较小值
min(p1, p2)
3.边界情况处理
- 重量恰好等于300克时,属于
G >= 300的情况,使用第二档运费N - 如果两种计算方式运费相同,任意选择一种都可以(因为取最小值会得到相同结果)
4.输出格式
- 输出结果保留一位小数,符合题目要求
- 使用
fixed << setprecision(1)确保输出格式正确
5.测试用例验证
- 样例1:V=100.4, G=300.2, M=60.6, N=70.5
- p1 = 0.5×100.4 = 50.2
- p2 = N = 70.5(因为G≥300)
- min(50.2, 70.5) = 50.2
- 样例2:V=99.8, G=200.9, M=60.2, N=70.1
- p1 = 0.5×99.8 = 49.9
- p2 = M = 60.2(因为G<300)
- min(49.9, 60.2) = 49.9
各种学习资料,助力大家一站式学习和提升!!!
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}- 一、CSP信奥赛C++通关学习视频课:
- C++语法基础
- C++语法进阶
- C++算法
- C++数据结构
- CSP信奥赛数学
- CSP信奥赛STL
- 二、CSP信奥赛C++竞赛拿奖视频课:
- 信奥赛csp-j初赛高频考点解析
- CSP信奥赛C++复赛集训课(12大高频考点专题集训)
- 三、考级、竞赛刷题题单及题解:
- GESP C++考级真题题解
- CSP信奥赛C++初赛及复赛高频考点真题解析
- CSP信奥赛C++一等奖通关刷题题单及题解
详细内容:
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转
2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转
3、csp信奥赛冲刺一等奖有效刷题题解:
CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
- 2025 csp-j 复赛真题及答案解析(最新更新)
- 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
- 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
- 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
- 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
- 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
- 2020 ~ 2024 csp 复赛真题题单及题解
- 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
- 2021 ~ 2024 csp-s 初赛高频考点解析
- 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
- 2024 csp-j 初赛真题及答案解析
- 2025 csp-j 初赛真题及答案解析(最新更新)
- 2025 csp-s 初赛真题及答案解析(最新更新)
- 2025 csp-x (山东)初赛真题及答案解析(最新更新)
- 2025 csp-x (江西)初赛真题及答案解析(最新更新)
- 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)
CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
- 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图
4、GESP C++考级真题题解:
GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转
GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转
· 文末祝福 ·
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}