题目要求
题目描述
医院药房管理是计算机辅助管理的重要场景之一。假设对于某种药品,每天工作开始时的库存总量已知,且当天不会进货补充。会有多位病人按顺序前来取药,每人需求数量不同。若某病人需要的数量超过当前库存,药房将拒绝该请求。请编写程序,计算一天内未能成功取药的病人数量。
输入格式
输入共三行:
第一行是一个整数,表示药品初始总量 m。
第二行是一个整数 n (0 < n ≤ 100),表示取药人数。
第三行包含 n 个整数,按时间顺序给出每个病人希望取走的药品数量。
输出格式
输出一行一个整数,表示当天没有取上药的人数。
样例输入 #1
30
6
10 5 20 6 7 8
样例输出 #1
2
题目分析
解题思路
本题的核心是模拟取药流程,并统计因库存不足而被拒绝的请求次数。这考察了基础的流程控制与循环逻辑。解题步骤如下:
- 数据读取:首先读取药品初始总量
m 和取药人数 n。
- 初始化计数器:设置一个变量
ans,用于记录未能取药的人数,初始值为0。
- 遍历处理请求:使用循环依次读取
n 个病人的需求量。
- 条件判断与库存更新:对于每个需求:
- 如果当前库存
m 大于等于需求量,则满足请求,并从库存 m 中减去相应数量。
- 否则(即库存不足),拒绝请求,并将计数器
ans 加1。
- 输出结果:循环结束后,输出
ans 的值。
这个过程清晰地体现了程序设计中条件判断与分支处理的基本思想。
示例代码
#include <iostream>
using namespace std;
int main() {
int m, n, ans = 0; // m:药品总量, n:人数, ans:未取上药的人数
cin >> m >> n;
for (int i = 0; i < n; i++) {
int need; // 当前病人需要的药量
cin >> need;
if (m >= need) { // 库存足够,发放药品
m -= need;
} else { // 库存不足,拒绝请求
ans++;
}
}
cout << ans << endl;
return 0;
}
在线练习:“luogu-B2067” 题目可在 洛谷 官方题库进行在线评测与提交,是巩固C++基础语法的经典练习题。
|