上海计算机学会2021年12月月赛C++丙组T2评委打分
发布时间
阅读量:
阅读量
题目描述
许多比赛在计算选手得分平均数的时候,都会先去掉一个最高得分,再去掉一个最低得分,这样可以避免极大值与极小值对平均值的影响。
给定 n个数字 a1,a2,⋯,an,表示一个选手获得的分数,请根据上述流程计算选手的最终得分。
注意如果有多个分数并列第一,则只会去掉一个最高分,去掉最低分的情况同理。
输入格式
第一行:单个整数 n;
第二行:n 个整数表示 a1,a2,⋯,an。
输出格式
一个浮点数:表示最终得分,四舍五入保留两位小数。
数据范围
- 对 50%50% 的数据,3≤n≤1000;
- 对 100%100% 的数据,3≤n≤100000;
- 0≤ai≤20000。
样例数据
输入:
5
100 1 20 30 40
输出:
30.00
说明:
(20+30+40)/3=30.00
解析:
本题关键点:找出最大值,最小值,算出总值减去最大值和最小值,最后算平均分,并且保留2位小数。代码如下:
#include <iostream>
#include<iomanip>
using namespace std;
int main(){
int n;
int max, min;
long sum;
double avg;
cin >> n;
int arr[n];
cin >> arr[0];
min = arr[0];
max = arr[0];
sum = arr[0];
if (n >= 3 && n <= 100000) {
for (int i = 1; i < n; i++) {
cin >> arr[i];
sum += arr[i];
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
avg = double(sum - max - min) / (n - 2);
}
//输出保留2位小数
cout << fixed << setprecision(2) << avg << endl;
return 0;
}
全部评论 (0)
还没有任何评论哟~
