题解:洛谷 B4354 假期阅读
【题目来源】
洛谷:B4354 [GESP202506 一级] 假期阅读 - 洛谷
【题目描述】
小 A 有一本厚厚的书。这本书总共有 \(n\) 页,小 A 一天中最多只能阅读完其中的 \(k\) 页。小 A 的假期总共有 \(t\) 天,他想知道在假期中最多能阅读完这本书的多少页。
【输入】
第一行,一个正整数 \(n\),表示书的页数。
第二行,一个正整数 \(k\),表示小 A 每天最多阅读的页数。
第三行,一个正整数 \(t\),表示小 A 假期的天数。
【输出】
一行,一个整数,表示假期中所能阅读的最多页数。
【输入样例】
8
3
2
【输出样例】
6
【核心思想】
-
问题分析:给定书的总页数 \(n\)、每天最多阅读页数 \(k\)、假期天数 \(t\),求假期中最多能阅读多少页。这是一个简单数学比较问题,核心在于判断总阅读能力 \(k \cdot t\) 是否能覆盖全部页数。
-
算法选择:
- 直接比较:计算 \(k \cdot t\) 与 \(n\) 的大小关系,取较小值
-
关键步骤:
- 读入数据:读取 \(n, k, t\)
- 判断与输出:
- 若 \(k \cdot t \geq n\):输出 \(n\)(能读完)
- 否则:输出 \(k \cdot t\)(读不完,取最大能力)
-
时间/空间复杂度:
- 时间复杂度:\(O(1)\)
- 空间复杂度:\(O(1)\)
-
基础数学判断的核心思想:
- 上限约束分析:实际阅读量受两个因素限制——书的总页数 \(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
浙公网安备 33010602011771号