hdu2199,double二分

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2199

题意:给一个Y,求满足8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y的x,且X在范围[0,100]中,若没有符合要求的X则输出No solution!

 

不知道为什么while开到1e-6会wa,但是开到1e-8也就二分34次(不用吝啬haha)

#include<bits/stdc++.h>
using namespace std;
double f(double n){return 8*n*n*n*n+7*n*n*n+2*n*n+3*n+6;}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        double l=0,r=100,y;
        scanf("%lf",&y);
        if(f(0)>y||f(100)<y){printf("No solution!\n");continue;}    
        while(r-l>1e-7)
        {
            double mid=(l+r)/2;
            if(f(mid)<y)l=mid;  //<=和<都可以过... 
            else r=mid;
        }
        printf("%.4f\n",l);
    }
    return 0; 
} 
posted @ 2019-10-29 23:15  myrtle  阅读(174)  评论(0编辑  收藏  举报