注意浮点数精度只有7位,只有用double才可以通过。为了精度最好把数据当字符串来输入。
#include <cstdio>
#include <vector>
#include <string.h>
using namespace std;
vector<int> PT;
void solve(int n,int average)
{
int res=0;
int res1=0;
int res2=0;
for(int i=0;i<n;i++)
{
// data=(PT[i]+0.001)*100;
if(PT[i]<average) res1+=average-PT[i];
else if(PT[i]>average) res2+=PT[i]-average-1;
}
res=res1<res2?res2:res1;
printf("$%.2f\n",res/100.0);
}
int main()
{
int n;
int p;
double price;
int average=0;
while(1)
{
scanf("%d",&n);
PT.clear();
average=0;
if(n==0)break;
for(int i=0;i<n;i++)
{
scanf("%lf",&price);
p=(price+0.001)*100;
PT.push_back(p);
average+=p;
}
average=average/n;
solve(n,average);
}
return 0;
}