解题思路:定义一个函数用来计算绳子数量,只需要假设最后的输出结果是x,然后采用二分法计算出x的最大值
注意事项:此函数的使用条件是在整数的时候,也就是把小数化成了整数,然后采用二分法,这里如何+-1是比较关键的地方.
参考代码:
#include<stdio.h>
int n,k,i;
double mid,mx,temp;
int r=0,l=1;
double a[10001];
int count(int x) //定义一个函数用来计算分割的绳子数量
{
int sum=0;
for(i=0;i<n;i++)
{
sum=sum+a[i]/x;
}
return sum;
}
int main()
{
scanf("%d %d\n",&n,&k);
for(i=0;i<n;i++)
{
scanf("%lf\n",&temp);
a[i]=temp*100;//化为整数
if(a[i] > r)r = a[i];
}
while(l<=r)
{
mid=(r+l)/2;
if(count(mid)<k)
r=mid-1;
else
{mx=mid;//这种情况下,说明mid是可以切割到k段绳索的,只不过要找到最大的为止
l=mid+1;}
}
printf("%.2lf\n",mx/100.0);
return 0;
}
0.0分
0 人评分
拆分位数 (C++代码)用char简单粗暴,嗯浏览:1120 |
不容易系列2 (C语言代码)浏览:698 |
点我有惊喜!你懂得!浏览:1559 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:762 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:637 |
A+B for Input-Output Practice (II) (C语言代码)浏览:1041 |
printf基础练习2 (有点不明白)浏览:883 |
淘淘的名单 (C语言代码)浏览:1167 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:552 |
WU-链表数据求和操作 (C++代码)浏览:1378 |