题解
奶牛吃草
1 条题解
-
0
P4287 奶牛吃草(入门)
解题思路
先把条件翻译成数学:n 头奶牛,每头每天吃 5 斤草,那么每天一共要吃 n×5 斤草。m 斤草能吃多少天?用整除:天数 d = m / (n×5)。
为什么用整除?因为"够吃几天"问的是完整的天数。比如 249 斤草、每天吃 25 斤,249 / 25 = 9 天(还剩 24 斤,不够完整吃第 10 天),所以是 9 天,不是 9.96 天。
然后判断:如果 d ≥ 10,说明够吃 10 天以上,输出 d;否则输出 NO。
边界情况:
- n 最小 1、m 最小 1:1 头牛每天吃 5 斤,1 斤草 d = 1/5 = 0,0 < 10,输出 NO。
- n 最大 100、m 最大 5000:每天吃 500 斤,d = 5000/500 = 10,正好够 10 天,输出 10。所以判断要用 d >= 10,别漏了等于 10 的情况。
- 样例 5 头牛、249 斤草:每天 25 斤,249/25 = 9,9 < 10,输出 NO,和样例一致。
参考代码
// 用途:n头奶牛每天吃5斤草,判断m斤草够吃10天吗,够则输出能吃的天数 #include <iostream> using namespace std; int main() { int n, m; cin >> n >> m; // 每天消耗 n*5 斤草,能吃的天数 = m / (n*5)(整除,向下取整) int d = m / (n * 5); if (d >= 10) cout << d << endl; // 够吃10天及以上,输出实际天数 else cout << "NO" << endl; // 不够10天,输出NO return 0; }复杂度分析
只做一次乘法、一次除法和一次比较,时间复杂度 O(1),额外空间 O(1)。m 最大 5000,n×5 最大 500,商最大 10,全部在 int 范围内,不会溢出。
- 1