#include<cstdio>
#include<cmath>
const double pi = acos(-1.0);
int a[10005];
double v[10005];
int n,f,k;
int f1(double x)
{
int sum2 = 0;
for(int i =1;i<=n;i++)
{
sum2 += (int)(v[i]/x);
}
if(sum2>f)
return 1;
else if(sum2==f)
return 2;
else
return 0;
}
int main()
{
while(scanf("%d",&k)!=EOF)
{
while(k--)
{
double sum = 0.0;
double max = 0.0;
scanf("%d%d",&n,&f);
f++;
for(int i = 1;i<=n;i++)
{
scanf("%d",&a[i]);
v[i] = a[i]*a[i]*pi;
sum+=v[i];
}
max = sum/f*1.0;
int tool = 0;
double x = max;
double y = 0.0;
double mid;
while(x-y>1e-5)
{
mid = (x+y)/2.0;
if(f1(mid)==1)
y = mid;
else if(f1(mid)==2)
break;
else
x = mid;
}
printf("%.4lf\n",mid);
}
}
return 0;
}
二分查找
最新推荐文章于 2023-12-31 16:02:37 发布