洛谷 P1577
整数二分 不进位保留n位小数
#include <bits/stdc++.h>
using namespace std;
int n, k;
double rope[10010];
double l, r, mid;
char s[100];
inline bool check(double x)
{
int num = 0;
for (int i = 0; i < n; i++)
{
num += int(rope[i]/mid);
}
return num >=k;
}
int main()
{
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++)
{
scanf("%lf", &rope[i]);
r = max(r,rope[i]);
}
while (r-l > 0.0001)
{
mid = (l+r)/2;
if (check(mid))
{
l = mid;
}
else
{
r = mid;
}
}
//printf("%lf %lf\n",l,r);
sprintf(s+1,"%.3f",l);
s[strlen(s+1)]='\0';
printf("%s",s+1);
system("pause");
return 0;
}
C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串,例:
#include <stdio.h>
#include <math.h>
int main()
{
char str[80];
sprintf(str, "Pi 的值 = %f", M_PI);
puts(str);
return(0);
}