top1编程
← 返回题目
题解

偶数均值

1 条题解

  • 0
    @ 2026-8-4 16:08:45

    解题思路

    先找出所有偶数且个位数字是 2 的数(x % 2 == 0 && x % 10 == 2),算出它们的均值。再遍历所有数字,输出比均值小的。如果没有满足条件的数字,输出 NO。

    题目要求格式化输入输出,所以用 scanf/printf。

    参考代码

    #include <cstdio>
    using namespace std;
    
    int main() {
        int n;
        scanf("%d", &n);
        int a[1005];
        int cnt = 0;
        double sum = 0;
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
            // 偶数且个位数字是2
            if (a[i] % 2 == 0 && a[i] % 10 == 2) {
                sum += a[i];
                cnt++;
            }
        }
        if (cnt == 0) { printf("NO\n"); return 0; }
        double avg = sum / cnt;
        printf("%.3f\n", avg);   // 均值保留3位
        int first = 1;
        for (int i = 0; i < n; i++) {
            if (a[i] < avg) {      // 比均值小的数字
                if (!first) printf(" ");
                printf("%d", a[i]);
                first = 0;
            }
        }
        printf("\n");
        return 0;
    }
    

    复杂度分析

    循环 n 次,时间复杂度 O(n),额外空间复杂度 O(n)。

    • 1