伸手高度加上 30cm 板凳得到阈值 r=x+30,单遍统计 10 个苹果中 h_i ≤ r 的个数即为答案,O(1)。
OJ: roj
题目 ID: 1103
难度:入门
标签:入门条件判断python
创建: 2026-09-29 18:55
更新: 2026-10-05 01:15
题目描述
秋天苹果树上有 10 个苹果,已知每个苹果到地面的高度。陶陶伸手能达到的最大高度为
样例输入:
text
100 200 150 140 129 134 167 198 200 111
110样例输出:
text
5思路
板凳是固定加成,先合成阈值
参考代码
Python 版:
python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 18:55
# update_at: 2026-09-29 18:55
import sys
def solve() -> None:
data = iter(map(int, sys.stdin.buffer.read().split()))
apples = [next(data) for _ in range(10)] # 题面固定 10 个苹果离地高度(cm)
reach = next(data) + 30 # 伸手最大高度 + 30cm 板凳 = 实际够到高度
print(sum(h <= reach for h in apples)) # 碰到即掉:高度不超过 reach 就能摘
if __name__ == "__main__":
solve()C++ 版(同一算法):
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-10-05 01:15
* update_at: 2026-10-05 01:15
*/
#include <cstdio>
typedef long long ll;
ll apple[11]; // apple[i] 表示第 i 个苹果到地面的高度(厘米)
int main() {
ll x = 0; // 陶陶伸手能达到的最大高度
for (int i = 1; i <= 10; i++) {
scanf("%lld", &apple[i]);
}
scanf("%lld", &x);
// 板凳有 30 厘米高,先合成阈值;判断用 <=,恰好够到的苹果也算摘到
ll reach = x + 30;
ll ans = 0; // 能摘到的苹果数目
for (int i = 1; i <= 10; i++) {
if (apple[i] <= reach) {
ans++;
}
}
printf("%lld\n", ans);
return 0;
}