zoj1847

该属于简单题,但涉及一个取整或许有所麻烦,精确解应该是求出平均值,再求偏差绝对值和除 2。这里由于精确到分,求出平均值 mean,按分求出 ceil 和 floor 的值。然后对于每个人,若钱 < mean,求与 floor 偏差绝对值加到总和中,否则与 ceil 求。另外,记录偏差(不取绝对值总和),如果最后总偏差不为 0,要将总偏差绝对值加到总和中。最后输出总和一半即可。

#include<stdio.h>
int main()
{
int n,i;
double money[1005];
double sum1,sum2,p,p1,p2;
while(scanf("%d",&n)&&n)
{
for(i=0,p=0;i<n;i++)
{
scanf("%lf",&money[i]);
p+=money[i];
}
p=p/n;
p2=p1=(int)(p*100);
p1=p1/100.0;
if(p2<(p*100))
p2++;
p2=p2/100.0;
for(i=0,sum1=0,sum2=0;i<n;i++)
{
if(money[i]<p)
sum1=sum1+p1-money[i];
else
sum2=sum2+money[i]-p2;
}
if(sum1>sum2)
printf("$%.2lf\n",sum1);
else
printf("$%.2lf\n",sum2);
}
return 0;
}

  

posted @ 2011-12-14 08:33  弄月吟风  阅读(146)  评论(0编辑  收藏  举报