求整数的和与均值

GitHub跳转原题关系图返回列表

线性扫描累加求和,再用总和除以个数得到平均值。

OJ: roj

题目 ID: 1061

难度:入门

标签:模拟入门

创建: 2026-07-06 10:30

更新: 2026-10-04 23:49

题目描述

读入 nn(1≤n≤100001 \le n \le 10000)个整数(每个绝对值不超过 1000010000),求它们的和与均值。输入第一行是整数 nn,接下来 nn 行每行一个整数;输出共一行,先输出和,再输出均值(保留到小数点后 5 位),中间用单个空格分隔。样例:输入 4 / 344 / 222 / 343 / 222,输出 1131 282.75000。

思路

顺序读入 nn 个整数,用 total 累加;全部读完即得总和,再做 total / n 并按 %.5f 输出均值即可。

参考代码

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-07-06 10:30
# update_at: 2026-07-06 10:30

import sys


def solve() -> None:
    data = map(int, sys.stdin.buffer.read().split())
    n = next(data)
    total = sum(data)
    avg = total / n
    print(f"{total} {avg:.5f}")


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-04 23:49
 * update_at: 2026-10-04 23:49
 */
// main.cpp:读入 n 个整数,输出它们的和与均值(均值保留 5 位小数)。
#include <cstdio>

typedef long long ll;

int n;           // 整数个数(题面 1 ≤ n ≤ 10000,int 足够)
double total;    // 累加器;n·max(|a_i|) ≤ 1e8,double 精确表示无问题
double x;        // 当前读入的整数

int main() {
    // 读入 n,再循环 n 次累加
    std::scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        std::scanf("%lf", &x);
        total += x;
    }

    // 平均值 = 总和 / n;按题面要求保留 5 位小数
    std::printf("%.0f %.5f\n", total, total / n);
    return 0;
}