题解
买练习本2
1 条题解
-
0
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