📜  门| GATE-CS-2017(套装1)|问题 28(1)

📅  最后修改于: 2023-12-03 15:28:45.625000             🧑  作者: Mango

题目描述

给定一组数字,编写一个程序来计算它们的平均值,舍入到小数点后两位。输入的第一行 t 是测试用例的数量。对于每个测试用例,输入的第一行是 n,表示数字的数量。第二行包含 n 个整数,它们是要求平均值的数字。

输入格式

第一行包含一个整数 t,表示测试用例的数量。

每个测试用例的第一行包含一个整数 n,表示数字的数量。

每个测试用例的第二行包含 n 个整数,它们是要求平均值的数字。

输出格式

对于每个测试用例,输出一行,即计算出的平均值,舍入到小数点后两位。

示例

输入:

2
5
1 2 3 4 5
3
3 5 8

输出:

3.00
5.33

解题思路

该题要求输入多组数据,每组数据都需要输出一个平均数结果。因此可以考虑使用循环结构,遍历每一组数据并分别计算平均值。

对于数据的输入,一种方式是使用多次输入语句,获取 t, n 和 n 个整数。另一种方式是使用文件读取,解析文件里的数字。得到数字后则可以通过求和和数量相除来计算平均值。最后将计算出的平均值保留两位小数并输出即可。

代码如下:

t = int(input())

for i in range(t):
    n = int(input())
    arr = list(map(int, input().split()))
    avg = sum(arr) / n
    print("{:.2f}".format(avg))

复杂度分析

该算法包含一个循环结构,遍历了每一组数据,因此时间复杂度为 O(tn),其中 t 和 n 分别表示测试用例的数量和每个测试用例的数字数量。由于只开辟了一个数组来存储数字,因此空间复杂度为 O(n)。