# 菜鸟的coding · Day 008
求平均分
题目
小f结识了璃月的天权星凝光,受邀观看一场戏剧比赛。本场比赛是面向新人的,所以云堇等老一辈戏子会作为评委, 对选手们的表现进行打分。本次比赛共有 n 位选手,m 位评委,每位评委会对选手进行打分。 正当小f观看比赛时,比赛的负责人告诉他需要他帮忙计算各个选手的得分平均值,但是小f不会,请你帮帮他。
输入:第一行两个数 n, m,表示选手个数与评委个数;第二行到第 n+1 行每行 m 个数,代表 m 位评委对第 i 名选手的打分情况。
输出:输出共 n 行,每行一个数,表示该选手的得分平均值,结果需保留两位小数。
数据范围:1 ≤ n, m ≤ 100,选手分数 x ∈ [0, 1000]。
提示:似乎并不需要将所有数据都记下来?
样例:
输入
7 6 4 7 2 6 10 7 0 5 0 10 3 10 2 6 8 4 3 6 6 3 6 7 5 8 5 9 3 3 8 1 5 9 9 3 2 0 5 8 0 4 1 10
输出
6.00 4.67 4.83 5.83 4.83 4.67 4.67
思路
average 函数传入评委数 m,在函数内逐个读入分数并累加,返回总和除以 m 的浮点结果; 主函数循环 n 次调用,每行输出两位小数。
#include<bits/stdc++.h>
using namespace std;
double average(int m){
int sum=0,x;
for(int c=0;c<m;c++){
cin>>x;
sum+=x;
}
return (double)sum/m;
}
int main(){
int n,m; // 选手,评委
cin>>n>>m;
for(int c=0;c<n;c++){
double result=average(m);
printf("%.2f\n",result);
}
return 0;
}
复杂度分析
- 时间复杂度:O(n·m)。
- 空间复杂度:O(1),边读边算,不存数组。
今日感受
题目提示"不需要存所有数据",边读边加,不用数组,读完直接返回平均值。