您的位置:首页 > 其它

HDU 2199

2013-05-01 22:51 363 查看
题目描述
        题目:HDOJ 2199
分析
        Y的值随着x的增加(0<x<100)单调递增,因此可以使用二分法解决该问题
        注意"No solution!"的条件,可以通过设定两个阈值min和max来实现
源代码
#include <stdio.h>
double getValue(double x);
int main()
{
int T;
double Y;
double left, right, mid;
scanf("%d", &T);
double min = getValue(0);
double max = getValue(100);
while (T --)
{
scanf("%lf", &Y);
if (Y < min || Y > max)
{
printf("No solution!\n");
continue;
}
left = 0;
right = 100;
while (right - left > 1e-7)
{
mid = (left + right) / 2;
if (getValue(mid) >= Y)
right = mid;
else
left = mid;
}

printf("%.4lf\n", (left + right) / 2);
}
return 0;
}

double getValue(double x)
{
return (8*x*x*x*x + 7*x*x*x + 2*x*x + 3*x + 6);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDU 2199 二分法