题解:洛谷 B4354 假期阅读

【题目来源】

洛谷:B4354 [GESP202506 一级] 假期阅读 - 洛谷

【题目描述】

小 A 有一本厚厚的书。这本书总共有 \(n\) 页,小 A 一天中最多只能阅读完其中的 \(k\) 页。小 A 的假期总共有 \(t\) 天,他想知道在假期中最多能阅读完这本书的多少页。

【输入】

第一行,一个正整数 \(n\),表示书的页数。

第二行,一个正整数 \(k\),表示小 A 每天最多阅读的页数。

第三行,一个正整数 \(t\),表示小 A 假期的天数。

【输出】

一行,一个整数,表示假期中所能阅读的最多页数。

【输入样例】

8
3
2

【输出样例】

6

【核心思想】

  1. 问题分析:给定书的总页数 \(n\)、每天最多阅读页数 \(k\)、假期天数 \(t\),求假期中最多能阅读多少页。这是一个简单数学比较问题,核心在于判断总阅读能力 \(k \cdot t\) 是否能覆盖全部页数。

  2. 算法选择

    • 直接比较:计算 \(k \cdot t\)\(n\) 的大小关系,取较小值
  3. 关键步骤

    • 读入数据:读取 \(n, k, t\)
    • 判断与输出
      • \(k \cdot t \geq n\):输出 \(n\)(能读完)
      • 否则:输出 \(k \cdot t\)(读不完,取最大能力)
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\)
    • 空间复杂度:\(O(1)\)
  5. 基础数学判断的核心思想

    • 上限约束分析:实际阅读量受两个因素限制——书的总页数 \(n\)(内容上限)和阅读能力的上限 \(k \cdot t\)(能力上限),最终结果取两者最小值
    • 简单决策逻辑:无需循环或复杂算法,直接通过一次比较即可确定答案,体现了问题本质的简洁性
    • 适用于基础资源限制下的最大产出计算类问题

【算法标签】

入门 #语法基础

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int n, k, t;  // n: 总数量, k: 每次处理量, t: 处理次数

int main()
{
    // 输入总数量、每次处理量和处理次数
    cin >> n >> k >> t;

    // 判断能否在t次处理内完成所有数量
    if (k * t >= n)
    {
        // 如果可以,输出总数量
        cout << n << endl;
    }
    else
    {
        // 否则输出最大能处理的数量
        cout << k * t << endl;
    }

    return 0;
}

【运行结果】

8
3
2
6
posted @ 2026-07-16 16:09  团爸讲算法  阅读(13)  评论(0)    收藏  举报