import java.util.Arrays;
import java.util.Scanner;
public class Main
{
static int n; //多少个蛋糕
static int per; //多少人
static double arr[];
static double pi = Math.acos(-1.0);
static int count;
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int N = cin.nextInt();
while(N-->0){
n = cin.nextInt();
per = cin.nextInt();
per++;
arr = new double[n];
for (int i = 0; i < n; i++) {
arr[i] = cin.nextDouble();
arr[i] = arr[i]*arr[i]*pi;
}
Arrays.sort(arr);
double rigth=arr[n-1],left=0,middle=0;
if(per<n){
count = per; //人比糕点个数少以人来划分 因为糕点不能拼凑
}else{
count = n; //人比糕点多就以糕点来划分
}
while(rigth-left>=1e-6){
middle = (rigth+left)/2;
if(judge(middle)){
left = middle;
}else{
rigth = middle;
}
}
System.out.printf("%.4f",left);
System.out.println();
}
}
private static boolean judge(double middle) {
int num = 0;
//人多就以糕点
for (int i = arr.length-1; i >=arr.length- count; i--) {
num = num + (int) (arr[i]/middle);
if(num>=per){
return true;
}
}
return false;
}
}
注意格式不能使用“%.4f\n”否则会出现格式错误
09-22
09-22