GESP认证C++编程真题解析 | B4409 [GESP202509 一级] 商店折扣
欢迎大家订阅我的CSDN专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总帖:GESP认证C++编程真题解析 | 汇总
【题目来源】
洛谷:[B4409 GESP202509 一级] 商店折扣 - 洛谷
【题目描述】
商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 $x$ 元减 $y$ 元;第二种方案是直接打 $n$ 折,也就是说价格变为原先的 $n/10$。这里的 $x,y,n$ 均是正整数,并且 $1≤y<x$,$1≤n<10$。
需要注意的是,第一种方案中满减优惠只能使用一次。例如购物满 $10$ 元减 $3$ 元时,若挑选了价格总和为 $33 $ 元的物品,只能减免 $3$ 元,需要支付 $30$ 元。
小明在商店挑选了价格总和为 $p$ 元的物品,结账时只能使用一种优惠方案。小明最少需要支付多少钱呢?
【输入】
四行,四个正整数 $x,y,n,p$,含义见题目描述。
【输出】
一行,一个小数,表示小明最少需要支付多少钱,保留两位小数。
【输入样例】
8
7
9
10
【输出样例】
3.00
【算法标签】
《洛谷 B4409 商店折扣》 #分支结构# #GESP# #2025#
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int x; // 第一个参数(具体含义根据题目)
int y; // 第二个参数(具体含义根据题目)
int n; // 第三个参数(具体含义根据题目)
int p; // 第四个参数(具体含义根据题目)
double ans1; // 第一种计算结果
double ans2; // 第二种计算结果
int main()
{
// 输入四个参数
cin >> x >> y >> n >> p;
// 计算第一种可能的结果
if (p >= x)
{
ans1 = p - y; // 如果p大于等于x,结果为p减去y
}
else
{
ans1 = p; // 否则结果就是p本身
}
// 计算第二种可能的结果
ans2 = 1.0 * p * n / 10; // p乘以n除以10,注意使用1.0保证浮点运算
// 比较两种结果,输出较小的那个,保留两位小数
if (ans1 > ans2)
{
printf("%.2lf", ans2);
}
else
{
printf("%.2lf", ans1);
}
return 0;
}
【运行结果】
8
7
9
10
3.00

浙公网安备 33010602011771号