zbyzhaoboyu0 @ 2024-07-19 12:26:42
#include<bits/stdtr1c++.h>
using namespace std;
double a[1000];
int main(){
int n;
double sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for(int i=1;i<n-1;i++){
sum+=a[i];
}
sum/=n;
printf("%.2f",sum);
cout<<" ";
sum=0;
int q;
for(int i=1;i<n-1;i++){
q+=a[i]-sum;
}
printf("%.2f",q);
return 0;
}
by Alex_smy @ 2024-07-19 12:38:48
@zbyzhaoboyu0 问题有点多
sum/=n
要改成 sum/=(n+2)
;%.2f
要改成 %.2lf
,因为是 double 类型;by Alex_smy @ 2024-07-19 12:41:54
还有你题意理解错了,q+=a[i]-sum;
应该是 q=max(q,abs(a[i]-sum));
by zbyzhaoboyu0 @ 2024-07-19 13:18:17
#include<bits/stdtr1c++.h>
using namespace std;
double a[1000];
int main(){
int n;
double sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for(int i=1;i<n-1;i++){
sum+=a[i];
}
sum/=(n+2);
printf("%.2lf",sum);
cout<<" ";
double q=0;
for(int i=1;i<n-1;i++){
q=q+max(q,abs(a[i]-sum));
}
printf("%.2lf",q);
return 0;
}
by EVERYWAY @ 2024-07-20 09:35:04
@zbyzhaoboyu0 有两个小问题
第一,第15行应为 sum/=(n-2)
,因为去了最大和最小值后,只有 n-2
个数了
第二,第20行要去掉 q+
不然会把所有差值累加起来
已AC 求关