top1编程
← 返回题目
题解

优质奶牛

1 条题解

  • 0
    @ 2026-8-5 10:24:13

    解题思路

    题目要我们做两件事:

    1. 算出牛群的平均产奶量;
    2. 数一数有多少头奶牛,每天的产奶量超过这个平均值。

    求平均值很简单:先把所有奶牛每天的产奶量加起来,得到总和,再除以奶牛的数量 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