您的位置:首页 > 其它

hdu2199 Can you solve this equation?(二分)

2016-03-02 18:51 477 查看
搜索四处碰壁,来二分玩玩。。。

有点注意点就是pow的用法和浮点数的处理吧,不过我还是第一次用二分的思想,尤其是中间的while取极限值,这好像只限于计算机吧,手算根本不行。。。

真是越搞越神奇啊。。。

#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <iostream>
#include <stdlib.h>

using namespace std;

const int N = 100;
const int INF = 1000000;

#define ans(x) 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6

int main()
{
// freopen("in.txt", "r", stdin);
int T;
double r, l, mid, Y;
scanf("%d", &T);
while(T --)
{
scanf("%lf", &Y);
if(Y < ans(0) || Y > ans(100)) printf("No solution!\n");
else
{
r = 100;
l = 0;
while(fabs(r - l) > 1e-10)
{
mid = (r + l) / 2.0;//注意这里是+号,还有2.0
if(Y < ans(mid)) r = mid;
else l = mid;
}
printf("%.4lf\n", r);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu