找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1431

积分

0

好友

208

主题
发表于 3 天前 | 查看: 8| 回复: 0

题目要求

题目描述

医院药房管理是计算机辅助管理的重要场景之一。假设对于某种药品,每天工作开始时的库存总量已知,且当天不会进货补充。会有多位病人按顺序前来取药,每人需求数量不同。若某病人需要的数量超过当前库存,药房将拒绝该请求。请编写程序,计算一天内未能成功取药的病人数量。

输入格式

输入共三行:
第一行是一个整数,表示药品初始总量 m
第二行是一个整数 n (0 < n ≤ 100),表示取药人数。
第三行包含 n 个整数,按时间顺序给出每个病人希望取走的药品数量。

输出格式

输出一行一个整数,表示当天没有取上药的人数。

样例输入 #1

30
6
10 5 20 6 7 8

样例输出 #1

2

题目分析

解题思路

本题的核心是模拟取药流程,并统计因库存不足而被拒绝的请求次数。这考察了基础的流程控制与循环逻辑。解题步骤如下:

  1. 数据读取:首先读取药品初始总量 m 和取药人数 n
  2. 初始化计数器:设置一个变量 ans,用于记录未能取药的人数,初始值为0。
  3. 遍历处理请求:使用循环依次读取 n 个病人的需求量。
  4. 条件判断与库存更新:对于每个需求:
    • 如果当前库存 m 大于等于需求量,则满足请求,并从库存 m 中减去相应数量。
    • 否则(即库存不足),拒绝请求,并将计数器 ans 加1。
  5. 输出结果:循环结束后,输出 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++基础语法的经典练习题。




上一篇:Vue3 Admin框架实战解析:纯净架构助力中后台系统多端开发
下一篇:C++贪心算法详解:洛谷P1413坚果保龄球题解与GESP考级练习
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 22:56 , Processed in 0.217518 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表