求助:B2095 白细胞计数本地编译答案正确,洛谷无法通过,求大神指点
  • 板块题目总版
  • 楼主zlz2023
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/11/5 21:56
  • 上次更新2023/11/6 10:27:23
查看原帖
求助:B2095 白细胞计数本地编译答案正确,洛谷无法通过,求大神指点
1088261
zlz2023楼主2023/11/5 21:56

白细胞计数

题目描述

医院采样了某临床病例治疗期间的白细胞数量样本 nn 份,用于分析某种新抗生素对该病例的治疗效果。为了降低分析误差,要先从这 nn 份样本中去除一个数值最大的样本和一个数值最小的样本,然后将剩余 n−2n-2 个有效样本的平均值作为分析指标。同时,为了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包括已扣除的两个样本)与该平均值之差的绝对值的最大值。

现在请你编写程序,根据提供的 nn 个样本值,计算出该病例的平均白细胞数量和对应的误差。

输入格式

输入的第一行是一个正整数 nn(2<n≤3002<n \le 300),表明共有 nn 个样本。

以下共有 nn 行,每行为一个浮点数,为对应的白细胞数量,其单位为 109/L10^9/L。数与数之间以一个空格分开。

输出格式

输出为两个浮点数,中间以一个空格分开。分别为平均白细胞数量和对应的误差,单位也是 109/L10^9/L。计算结果需保留到小数点后 22 位。

样例 #1

样例输入 #1

5
12.0
13.0
11.0
9.0
10.0

样例输出 #1

11.00 1.00

错误代码

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main() {
	int n;
	double a[550],sum,ans,maxn=-1,minn=999999;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	for(int i=1;i<=n;i++) {
		if(a[i]>maxn) 
			maxn=a[i];
			//printf("%.1lf\n",maxn);
		
		
		if(a[i]>0&&a[i]<minn)
			minn=a[i];
			//printf("%.1lf\n",minn);
		
	}
	for(int i=1;i<=n;i++) {
		sum+=a[i];
	}
	sum-=minn+maxn;
	sum/=(n-2);
	for(int i=1;i<=n;i++) {
		if(a[i]!=maxn && a[i]!=minn) {
			if(a[i]-sum>ans)
			ans=a[i]-sum;
		}		
	}
	printf("%.2lf %.2lf",sum,ans);
	return 0;
}
2023/11/5 21:56
加载中...