完全是一个卡精度的水题,当时也是wrong了好几遍~~~
代码如下:
#include<stdio.h>
#include<math.h>
#define N 100
int main()
{
#ifdef sta
freopen("sample.text","r",stdin);
#endif
double money[1000+1],sum,sum2,min,aver;
int n,i;
while(1)
{
scanf("%d",&n);
if(n==0)
break;
sum=0;
for(i=0; i<n; i++)
scanf("%lf",&money[i]);
for(i=0; i<n; i++)
sum+=money[i];
aver=(sum/n+0.005);
aver=floor(aver*100)/100;
min=0;
sum=sum2=0;
for(i=0; i<n; i++)
if(money[i]-aver>0)
sum+=money[i]-aver;
else sum2+=aver-money[i];
if(sum<sum2) //注意缩小误差
printf("$%.2lf\n",sum);
else
printf("$%.2lf\n",sum2);
}
return 0;
}