1 条题解
-
0
📝 题目大意
已知高桥君 岁时身高为 厘米。在 岁到 岁之间,每年身高增长 厘米;在 岁到 岁之间身高不变。求他在 岁时的身高。
💡 解题思路
- 题目分析:数据范围极小(),可以直接模拟。但关键是理解分段逻辑:身高只在 期间变化,之后恒定。
- 算法推导:
- 设出生时( 岁)身高为 ,则 ,即 。
- 当 时,身高已经定型,与 岁时相同,直接输出 。
- 当 时,身高为 $H_0 + M \cdot D = T - X \cdot D + M \cdot D = T - (X - M) \cdot D$。代码中
T - (X - M) * D正是这个公式的体现——从稳定高度 往回倒推还未长完的 年。
- 边界与细节:
- 可能为 (出生当天),公式 仍然成立,根据限制条件身高不会为负。
- 的边界是 时归入第一分支,此时
(X - M) * D = 0,两分支等价,但分到第一分支更符合"已经停止生长"的直觉。
⏱️ 复杂度分析
- 时间复杂度:,仅做常数次算术运算与比较。
- 空间复杂度:。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main() { int N, M, X, T, D; cin >> N >> M >> X >> T >> D; if (M >= X) { // M 岁之后身高已经不再变化,直接输出 N 岁时的身高 T cout << T << endl; } else { // M 岁还在生长期,身高比 T 少 (X - M) 年的增长量 cout << T - (X - M) * D << endl; } return 0; }
- 1
信息
- ID
- 618
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者