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
posted @ 2026-01-14 14:42  热爱编程的通信人  阅读(0)  评论(0)    收藏  举报