https://www.luogu.org/problemnew/show/P1577
#include<stdio.h>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<string>
#include<math.h>
using namespace std;
char s[30];
int n, k;
double a[10004];
int cal(double a[], int n,double x)//以长度为x去分绳子
{
int sum = 0;
for(int i = 0; i < n; i++)
{
sum += floor(a[i]/x);
}
return sum;
}
int main()
{
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++)
{
cin>>a[i];
}
double left = 0.00000;
double right = 100000.00000;
while(right - left > 1e-6 )
{
double mid = (left + right)/2;
int num = cal(a, n, mid);
if( num >= k )
{
left = mid ;
}
else if(num < k)
{
right = mid;
}
}
sprintf(s,"%.3f",left );
s[strlen(s)] = '\0';
for(int i = 0; i < (strlen(s) - 1); i++)
cout<<s[i];
cout<<endl;
//system("pause");
}