POJ 2646 The Trip
题目链接:http://poj.org/problem?id=2646
题意:有n个学生的花费,计算使他们平摊花费所移动钱最少是多少。
注意:“the minimum amount of money that must change hands in order to equalize (within a cent) all the students' costs. ”
题目中最关键的一句,最少的钱——the minimum amount of money。精确到1美分——(within a cent);
AC代码:
#include<stdio.h>
int main()
{
int n,i;
double a[1100],sum,ave;
double ans1,ans2;
while(scanf("%d",&n)!=EOF,n)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
sum+=a[i];
}
ave=((int)((sum/n+0.005)*100))/100.0;
ans1=ans2=0;
for(i=0;i<n;i++)
{
if(a[i]>ave)
ans1+=a[i]-ave;
else
ans2+=ave-a[i];
}
printf("$%.2lf\n",ans1>ans2? ans2:ans1);
}
return 0;
}