题解
优质奶牛
1 条题解
-
0
解题思路
题目要我们做两件事:
- 算出牛群的平均产奶量;
- 数一数有多少头奶牛,每天的产奶量超过这个平均值。
求平均值很简单:先把所有奶牛每天的产奶量加起来,得到总和,再除以奶牛的数量 n,就是平均产奶量。
然后拿这个平均值当"分数线",把每头奶牛的产奶量都拿来比一比:只要严格大于平均值的,就是优质奶牛,计数器加 1。等于平均值的不算哦!
最后输出的时候,平均值要保留 2 位小数。我们用 printf("%.2f") 来输出,它会自动帮我们四舍五入到两位小数。
参考代码
// P4511 优质奶牛:求平均产奶量,统计产奶量超过平均值的奶牛数 // 平均产奶量用printf保留2位小数,与评测期望的舍入方式一致 #include <cstdio> #include <iostream> using namespace std; int main() { int n; cin >> n; double a[105]; double sum = 0; for (int i = 0; i < n; i++) { cin >> a[i]; sum += a[i]; // 累加总产奶量 } double avg = sum / n; // 平均产奶量 printf("%.2f ", avg); // 保留2位小数输出 int cnt = 0; for (int i = 0; i < n; i++) if (a[i] > avg) cnt++; // 严格超过平均值才算优质奶牛 printf("%d ", cnt); // 全部用printf输出,避免与cout混用刷新顺序出错 return 0; }复杂度分析
先循环一遍求和、算平均,再循环一遍统计优质奶牛,一共两遍,每遍都是 O(n),所以时间复杂度是 O(n)。需要一个数组把每头牛的产奶量存下来,空间复杂度是 O(n)。
- 1