问题描述
王老师的班级组织了一次活动,去桃园摘桃子。同学们摘了很多很多桃子,王老师出了一个问题,想考考聪明的同学们,如果我们将所有桃子中最重的桃子留下(如果最重的有多个,多个最重的要全部留下),最轻的桃子也留下(如果最轻的有多个,多个最轻的也要全部留下),剩余的桃子带走,那么我们总共带走了多重的桃子,平均一个桃子多重(平均值保留 11 位小数)?
比如,假设班上同学们采摘了 88 个桃子,重量如下:
99 99 88 55 66 55 99 88
按照王老师的要求,留下重的桃子,也就是值为 99 的桃子,最轻的桃子,也就是值为 55 的桃子,因此同学们带走桃子的总重量 = 8+6+88+6+8 = 2222 ,平均一个桃子的重量 = 22/322/3 = 7.37.3 (保留 11 位小数)。
输入
输入有 22 行:
第 11 行有一个整数 nn ( nn 是 6∼10006∼1000 之间的整数),代表同学们采摘桃子的总个数;
第 22 行有 nn 个整数(这些整数都是 1∼1001∼100之间的整数),代表每个桃子的重量,数字之间用空格隔开。
输出
输出有 22 行:
第 11 行有一个整数,代表同学们按照王老师的要求,最终带走的桃子的总重量;
第 22 行有一个小数(保留 11 位小数),代表同学们带走的桃子,平均一个桃子有多重。
样例
输入
复制
8 9 9 8 5 6 5 9 8
输出
复制
22 7.3
输入
复制
6 2 8 8 3 5 6
输出
复制
14 4.7
答案
#include <iostream>
# include <iomanip>
using namespace std;
int main(){
int n,i,d=0,k=1000000,m=0,l=0,a[10000];
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
if(a[i]>d){
d=a[i];
}if(a[i]<k){
k=a[i];
}m=m+a[i];
}for(i=0;i<n;i++){
if(a[i]==d){
m=m-a[i];
l++;
}if(a[i]==k){
m=m-a[i];
l++;
}
}cout<<m<<endl;
cout<<fixed<<setprecision(1)<<m*1.0/(n-l);
}