信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1114:白细胞计数
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1114:白细胞计数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間限制: 1000 ms 內存限制: 65536 KB
提交數: 12460 通過數: 4172
【題目描述】
醫院采樣了某臨床病例治療期間的白細胞數量樣本n份,用于分析某種新抗生素對該病例的治療效果。
為了降低分析誤差,要先從這n份樣本中去除一個數值最大的樣本和一個數值最小的樣本,然后將剩余n-2個有效樣本的平均值作為分析指標。
同時,為了觀察該抗生素的療效是否穩定,還要給出該平均值的誤差,即所有有效樣本(即不包括已扣除的兩個樣本)與該平均值之差的絕對值的最大值。
現在請你編寫程序,根據提供的n個樣本值,計算出該病例的平均白細胞數量和對應的誤差。
【輸入】
輸入的第一行是一個正整數n(2 <n≤ 300),表明共有n個樣本。
以下共有n行,每行為一個浮點數,為對應的白細胞數量,其單位為109/L。數與數之間以一個空格分開。
【輸出】
輸出為兩個浮點數,中間以一個空格分開。分別為平均白細胞數量和對應的誤差,單位也是109/L。計算結果需保留到小數點后2位。
【輸入樣例】
5
12.0
13.0
11.0
9.0
10.0
【輸出樣例】
11.00 1.00
【來源】
NO
代碼
#include <cstdio> #include <cmath> #include <iostream> using namespace std; int main() {int n;cin>>n;double people[n+1];people[0]=n;double max,max_x,min,min_x,sum=0.0;for(int i=1;i<=n;i++){cin>>people[i];if(i==1){max=people[1];min=people[1];}else{if(people[i]>max){max=people[i];max_x=i;}if(people[i]<min){min=people[i];min_x=i;}}sum+=people[i];}double average=(sum-max-min)/(n-2)*1.0;double error=0.0;int temp=0;for(int i=1;i<=n;i++){if(i==max_x||i==min_x) continue;if(abs(people[i]-average)>error) error=abs(people[i]-average);}printf("%.2lf %.2lf",average,error);return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1114:白细胞计数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZYAR20A 亚克力2驱 蓝牙 298
- 下一篇: 1021:打印字符