POJ1064 Cable master

#include <cstdio>
#include <cmath>
#include <string>

const int MAXL = 10010;
//const double INF = 10010;
double Array[MAXL];
int N, K;

bool C(double x)
{
	int num = 0;
	for (int i = 0; i < N; ++i) {
		num += (int)(Array[i] / x);
	}
	return num >= K;
}
int main()
{
	double maxv = 0;
	while (scanf("%d%d", &N, &K) != EOF) {
		for (int i = 0; i < N; ++i) {
			scanf("%lf", &Array[i]);
			if (maxv < Array[i]) maxv = Array[i];
		}
		double lb = 0, ub = maxv;
		for (int i = 0; i < 100; ++i) {
			double mid = (lb + ub) / 2;
			if (C(mid)) lb = mid;
			else ub = mid;
		}
		printf("%.2f\n", floor(ub * 100) / 100);
	}
	return 0;
}

wa了好多回,蒟蒻简直不能直视。据说wa在精度上了。输出结果的时候用"%.2f"能过。wa之前用的是"%.2lf",结果改了之后就过了。。。。神犇说是编译器的问题,查后说

poj上的G++输入double用%lf,输出用%f,C++则两者都是%lf  orz
posted @ 2014-03-13 22:56  WJZDMR  阅读(241)  评论(0)    收藏  举报