1 条题解

  • 0
    @ 2026-10-18 17:43:56

    G1021 [GESP202509 一级] 商店折扣 题解

    难度:2(GeekPi教学评定);知识点:条件判断、最值、浮点运算。

    解题思路

    分别计算两种优惠的实际付款:满x元时减y元,否则仍付p;n折的付款是p*n/10。优惠不能叠加,取两个结果中的较小值。

    为什么正确

    两种可选优惠都单独计算了有效价格,取最小值就是最便宜的合法方案。

    易错点

    满减条件包含p==x;n折应除以10;使用浮点计算,固定输出两位小数。

    复杂度

    时间:O(1);额外空间:O(1)。

    参考代码(C++17)

    #include<bits/stdc++.h>
    
    using namespace std;
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        double x,y,n,p;
        cin>>x>>y>>n>>p;
        cout<<fixed<<setprecision(2)<<min(p>=x?p-y:p,p*n/10);
    }
    

    来源与说明

    本题解为配套教学整理,非官方题解。题库使用自行生成的测试数据,8个测试点。

    • 1

    信息

    ID
    629
    时间
    1000ms
    内存
    512MiB
    难度
    入门
    标签
    递交数
    2
    已通过
    1
    上传者