关于B295(白细胞计数)所展开的相关问题
  • 板块学术版
  • 楼主anyouan
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/12/15 19:03
  • 上次更新2024/12/15 22:09:54
查看原帖
关于B295(白细胞计数)所展开的相关问题
1345138
anyouan楼主2024/12/15 19:03

白细胞计数

题目描述

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

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

输入格式

输入的第一行是一个正整数 nn2<n3002<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

上面是题目描述, 以下是我的解题代码。 (本代码只能拿到60分,再检查后未发现问题,有法现问题的,可以随时和我沟通谢谢各位大神

#include<bits/stdc++.h>
using namespace std;
int n;
double a[305],p,p2,c,b[305];
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	a[0]=0;
	a[n]=0; 
	for(int i=0;i<n-1;i++){
		p+=a[i];
	}
	p2=p/(n-2);
	for(int i=0;i<n;i++){
	if(a[i]!=0){
		if(a[i]>=p2){
			b[i]=a[i]-p2;
		}
		else{
			b[i]=p2-a[i];
		}
	}
	}
	sort(b,b+n-2);
	c=b[n-2];
    printf("%.2lf",p2);
    cout<<' ';
    printf("%.2lf",c);
}
2024/12/15 19:03
加载中...