计算出平均值后,根据题意:“多退少补”,则应把学生分为两部分:多于平均数的和少于平均数的,分别计算其交易金额并应取其中较大的金额。
教训:一定要注意精度问题。
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int n;
int main()
{
while (cin>>n)
{
if (n==0) break;
double a[1100]={0},sum=0.0;
for (int i=1;i<=n;++i)
{
cin>>a[i];
sum+=a[i];
}
double value=sum/n;
double up=0.0,down=0.0;
for (int i=1;i<=n;++i)
{
if (a[i]>value) up+=((int)(100*(a[i]-value))/100.00);//一定要注意精度
else down+=((int)(100*(value-a[i]))/100.00);
}
if (up>down) printf("$%.2lf\n",up);
else printf("$%.2lf\n",down);
}
return 0;
}