top1编程
← 返回题目
题解

买练习本2

1 条题解

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

    P4288 买练习本2(入门)

    解题思路

    这道题是"算钱够不够":先算出买所有本子要花多少钱,再看带的钱够不够,够的话还剩多少。

    总价 = 单价 × 数量。用 cost 存总价,判断 money 和 cost 的大小关系:

    • 如果 money >= cost:够买,剩余的钱 = money - cost,输出这个数。
    • 否则:不够买,输出 NO。

    边界情况:

    • money、单价、数量范围都是 1~1000,总价最大 1000×1000 = 1000000,int 完全装得下。
    • 恰好相等(money == cost)时,够买,剩余 0 元,输出 0。所以判断要用 >=,不能用 >。
    • 样例 100 元、单价 8 元、买 12 本:总价 8×12 = 96 元,100-96 = 4 元,输出 4,和样例一致。
    • 如果钱不够,比如 50 元买 12 本 8 元的本子:50 < 96,输出 NO。

    参考代码

    // 用途:根据带的钱、单价和数量判断够不够买练习本,够买输出剩余钱数
    #include <iostream>
    using namespace std;
    
    int main() {
        int money, price, cnt;
        cin >> money >> price >> cnt;
        int cost = price * cnt;                        // 买cnt本的总价
        if (money >= cost) cout << money - cost << endl;  // 够买:输出剩余钱数
        else cout << "NO" << endl;                     // 不够买:输出NO
        return 0;
    }
    

    复杂度分析

    只做一次乘法、一次减法和一次比较,时间复杂度 O(1),额外空间 O(1)。输入范围都是 1~1000,总价最大 1000000,money 最多 1000,即使 money-cost 为负也只在内存里暂存,不会超过 int 范围,绝对安全。

    • 1