top1编程
← 返回题目
题解

花果山会员

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4292 花果山会员(【入门】)

    解题思路

    孙悟空的公司给不同身份的顾客发优惠:白金会员立减 100 元,金卡会员立减 80 元,银卡会员立减 70 元,普通顾客立减 30 元。我们只需要读入顾客身份和消费金额,按身份减掉对应的钱,就是应付金额。

    输入有两行:第一行一个字符代表身份,P 是白金、G 是金卡、S 是银卡,其他任何字符都算普通顾客(注意这不只是普通用户,还可能是别的乱七八糟的字符,所以用 else 兜底);第二行是消费金额。

    用 if...else if...else 依次判断:

    • P → 金额减 100;
    • G → 金额减 80;
    • S → 金额减 70;
    • 其他 → 金额减 30。

    拿样例来说,金卡顾客消费 580 元,减 80 元后应付 580−80=500580-80=500 元。

    边界情况:题目保证最低消费 300 元、最高 10000 元,减完优惠后一定是正数,不会出现负数金额。

    参考代码

    // 根据会员身份计算优惠后的应付金额
    #include <iostream>
    using namespace std;
    
    int main() {
        char c;
        int m;
        cin >> c >> m;   // 第一行身份,第二行消费金额
        if (c == 'P') cout << m - 100 << endl;      // 白金减100
        else if (c == 'G') cout << m - 80 << endl;  // 金卡减80
        else if (c == 'S') cout << m - 70 << endl;  // 银卡减70
        else cout << m - 30 << endl;                // 普通减30
        return 0;
    }
    

    复杂度分析

    最多判断 4 次就能算出答案,和消费金额的大小无关,所以时间复杂度是 O(1)O(1)。只用了一个字符和两个整数变量,额外空间复杂度也是 O(1)O(1)。

    • 1