信息学奥赛一本通(1114:白细胞计数)
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通(1114:白细胞计数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1114:白細胞計數
時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 42906 ??? 通過數: 14315
【題目描述】
醫院采樣了某臨床病例治療期間的白細胞數量樣本nn份,用于分析某種新抗生素對該病例的治療效果。為了降低分析誤差,要先從這nn份樣本中去除一個數值最大的樣本和一個數值最小的樣本,然后將剩余n?2n?2個有效樣本的平均值作為分析指標。同時,為了觀察該抗生素的療效是否穩定,還要給出該平均值的誤差,即所有有效樣本(即不包括已扣除的兩個樣本)與該平均值之差的絕對值的最大值。
現在請你編寫程序,根據提供的nn個樣本值,計算出該病例的平均白細胞數量和對應的誤差。
【輸入】
輸入的第一行是一個正整數n(2<n≤300)n(2<n≤300),表明共有nn個樣本。
以下共有nn行,每行為一個浮點數,為對應的白細胞數量,其單位為109/L109/L。數與數之間以一個空格分開。
【輸出】
輸出為兩個浮點數,中間以一個空格分開。分別為平均白細胞數量和對應的誤差,單位也是109/L109/L。計算結果需保留到小數點后22位。
【輸入樣例】
5 12.0 13.0 11.0 9.0 10.0【輸出樣例】
11.00 1.00【參考代碼】
#include <stdio.h> #include <math.h> #define N 310 double a[N]; int main() {int i,n,tmax,tmin;double max,min,sum,avg,maxavg;scanf("%d",&n);for(i=0;i<n;i++)scanf("%lf",&a[i]);max=a[0];min=a[0];sum=0;for(i=0;i<n;i++){sum+=a[i];if(a[i]>max){max=a[i];tmax=i;}if(a[i]<min){min=a[i];tmin=i;}}avg=(sum-max-min)/(n-2);for(i=0;i<n;i++){if(i!=tmax && i!=tmin)a[i]=fabs(a[i]-avg);}maxavg=0;for(i=0;i<n;i++){if(i!=tmax && i!=tmin){if(a[i]>maxavg)maxavg=a[i];}}printf("%.2lf %.2lf\n",avg,maxavg);return 0; }http://ybt.ssoier.cn:8088/problem_show.php?pid=1114
總結
以上是生活随笔為你收集整理的信息学奥赛一本通(1114:白细胞计数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(2043:【例5.11
- 下一篇: 信息学奥赛一本通(2025:【例4.11