给你n条绳子,把这些绳子切割成k段相同的长度。问你能切割的最大长度是多少。保留小数点后两位并且记住要进位。
用二分写。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define MAX 11000
#define INF 100000000
using namespace std;
int n,k;
double l[MAX];
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++)
scanf("%lf",&l[i]);
double h = 0;
double t = INF;
double mid;
for(int i=0; i<100; i++){
mid = (h+t)/2;
int sum = 0;
for(int i=0; i<n; i++)
sum += (int)(l[i]/mid);
if(sum>=k)
h = mid;
else
t = mid;
}
printf("%.2f\n",floor(mid*100)/100);
return 0;
}