day2 HDU 2199 Can you solve this equation?

来源:互联网 发布:淘宝直通车点击 编辑:程序博客网 时间:2024/06/15 03:27
#include"iostream"#include"iomanip"#include"math.h"using namespace std;double f(double x){    return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;}double find(double y){    double l,r,mid,k;    l=0; r=100;    mid=(l+r)/2.0;    k=f(mid);    while(fabs(k-y)>0.00001)    {       if(k>y)r=mid;       else   l=mid;       mid=(l+r)/2.0;       k=f(mid);    }    return mid;}int main(){    int t;    double y,k;    cin>>t;    while(t--)    {        cin>>y;        if(f(0)>y||f(100)<y) cout<<"No solution!"<<endl;        else        {           cout<<fixed<<setprecision(4)<<find(y)<<endl;        }    }    return 0;}

求解方程问题,要注意精度的设置,至少要达到和样例相同的答案精度

除此之外,在第一次尝试的时候,二分判断条件写的是l+esp<r这种,后来交上去WA,以区间带精度划分结果可能会导致结果不正确,对于直接二分求答案的题目还是将答案带精度是否在误差允许范围内作为判断条件比较好

0 0
原创粉丝点击