题意与原解析均从本地 OpenJudge 缓存迁移。
OJ: noi_openjudge
题目 ID: ch0109-08
难度:未知
标签:数组模拟浮点数python
日期: 2026-07-30 23:01
题意
完整题面见同目录的 problem.md。
思路
删除一个最大值和一个最小值后计算剩余样本平均值,再求其与平均值的最大绝对偏差。
代码
Python代码
python
sample_count = int(input())
samples = [float(input()) for _ in range(sample_count)]
samples.remove(max(samples))
samples.remove(min(samples))
average = sum(samples) / len(samples)
error = max(abs(sample - average) for sample in samples)
print(f"{average:.2f} {error:.2f}")C++代码
cpp
#include <cstdio>
#include <cmath>
int n;
double a[1000];
double max = -1;
double min = 99999;
int main(){
scanf("%d",&n);
int i;
double sum = 0;
for (i=1;i<=n;i++){
scanf("%lf",&a[i]);
if( max < a[i])
max = a[i];
if( min > a[i])
min = a[i];
sum += a[i];
}
double max2 = -1;
sum -=(max+min);
int cnt_max=0,cnt_min=0;
double level = sum /(n-2);
for (i=1;i<=n;i++){
if(a[i] == max && cnt_max == 0) {
cnt_max++;
continue;
}
if(a[i] == min && cnt_min== 0) {
cnt_min++;
continue;
}
double ret = fabs(a[i]-level);
if( ret > max2){
max2 = ret;
}
}
printf("%.2lf %.2lf",level,max2);
return 0;
}