1.9编程基础之顺序查找_08白细胞计数
OpenJudge - 08:白细胞计数

锚点C++参考代码一:

/*

1.9编程基础之顺序查找_08白细胞计数01

http://noi.openjudge.cn/ch0109/08/

*/

#include<cstdio>

#include<iostream>

#include<cmath> //因为要用到abs函数(返回绝对值)

#include<algorithm> //因为要用到sort排序

using namespace std;

double a[310],sum=0,j,average;

int main( void )

{

int n,i;


cin>>n;


for(i=0;i<n;i++)

cin>>a[i];


sort(a,a+n);//给这些数组排序


for(i=1;i<n-1;i++) //从1开始,n-1结束,就不包含了1个最小值和1个最大值

sum+=a[i];


average=sum/(n-2);


j=abs(a[1]-average);//j用来存储误差,最保险地先赋值为第一个有效数的误差


for(i=2;i<n-1;i++)//这样只需从2开始

{

if(abs(a[i]-average)>j) j=abs(a[i]-average);//不断更新最大误差

}


printf("%.2lf %.2lf",average,j);


return 0;

}


锚点C++参考代码二:

/*

1.9编程基础之顺序查找_08白细胞计数02

http://noi.openjudge.cn/ch0109/08/

*/

#include<bits/stdc++.h>

using namespace std;

double a[301],b[301],m=0,p;

int main( void )

{

int n,i,j;

cin>>n;


for(i=1;i<=n;i++)

cin>>a[i];


sort(a,a+n+1);


for(i=2;i<n;i++)

m+=a[i];


p=m/(n-2);

m=-10000000;


for(i=2;i<n;i++)

{

b[i]=abs(a[i]-p);

if(m<b[i]) m=b[i];

}


printf("%.2lf %.2lf",p,m);


return 0;

}


锚点C++参考代码三:

/*

1.9编程基础之顺序查找_08白细胞计数04

http://noi.openjudge.cn/ch0109/08/

*/

#include <bits/stdc++.h>

using namespace std;

double a[1000],sum;

int main( void )

{

int n;

cin>>n;


for (int i=0;i<=n-1;++i)

cin>>a[i];


sort(a,a+n);


for (int i=1;i<=n-2;++i)

sum+=a[i];


sum/=(n-2);


printf("%.2lf %.2lf",sum,max(abs(a[n-2]-sum),abs(a[1]-sum)));


return 0;

}


锚点C++参考代码四:

/*

1.9编程基础之顺序查找_08白细胞计数05

http://noi.openjudge.cn/ch0109/08/

*/

#include<bits/stdc++.h>

using namespace std;

int main()

{

int n,i;

double a[301],sum=0.000;

cin>>n;


for(i=1;i<=n;i++) cin>>a[i];


sort(a+1,a+n+1);


for(i=2;i<n;i++) sum+=a[i];


a[0]=sum*1.000/(n-2);


printf("%.2f %.2f",a[0],max(fabs(a[0]-a[2]),fabs(a[n-1]-a[0])));


return 0;

}


锚点python3参考代码:

import sys

import math

n=int(input())


a=[]


j=0

while j<n:

x=float(input())

a.append(x)

j+=1


a.sort()


#print(a)



lena=len(a)

#print(lena)


i=1

sum=0.0

while i<lena-1:


sum+=a[i]


i+=1

ave=sum/(n-2)


k=abs(a[1]-ave)




i=2


while i<=n-2:

if abs(a[i]-ave)>k:

k=abs(a[i]-ave)

i+=1


print('%.2f' %ave,end=" ")

print('%.2f' %k)