hdu2199 Can you solve this equation?(二分查找,多项式求解)

来源:互联网 发布:java jaon添加元素 编辑:程序博客网 时间:2024/05/16 08:15

题目链接:点击打开链接

题目描述:给定一个单调多项式,问在[0,100]是否存在值满足多项式等于某个值?

解题思路:二分查找

注意:题目给出精确到4位小数即可,所以eps为6即可,否则会TLE

代码:

#include <cstdio>#include <cmath>#define eps 1e-5///注意事项,精度问题,太高容易超时using namespace std;double cal(double x){    return (8*x*x*x*x+7*x*x*x+2*x*x+3*x+6);}int main(){    int T;    scanf("%d",&T);    while(T--){        double n;        scanf("%lf",&n);        if(n-6<-eps||cal(100)-n<-eps)///排除不可能的情况,否则超时        {            printf("No solution!\n");            continue;        }        double l=0,r=100;        while(r-l>-eps){            double mid=(l+r)/2;            double t=cal(mid);            if(fabs(t-n)<=eps){                printf("%.4lf\n",mid);                break;            }            else if(t-n<-eps)                l=mid;            else                r=mid;        }    }    return 0;}














0 0
原创粉丝点击