逆向思考。
但是最后路程会多出来,必须减去多出来的那部分。
int main()
{
int n,k;
double dist;
double orl;
int i,j;
while (scanf("%d", &k) != EOF)
{
for (j=0;j<k;j++)
{
scanf("%d", &n);
dist = n-500;
i=1;
orl = 500.0;
while (dist>0)
{
dist -= 500.0/(i*2+1);
i++;
//printf("%f %d/n", dist, i-1);
}
orl = 500*i+dist*(i*2-1);
printf("%.3f/n", orl);
}
}
return 0;
}