zoukankan      html  css  js  c++  java
  • c++ 二分答案(解方程)

    c++ 解方程

    题目描述

    给出方程:
    8x^4 + 7x^3 + 2x^2 + 3x + 6 = Y
    其中,实数Y满足 (fabs(Y) <= 1e10)
    请输出x在区间[0,100]的解,结果精确到小数点后4位。如果不存在解,输出:“No solution!”。

    输入

    第一行输入一个数字T (1<=T<=100),表示有T组测试数据
    接下来输入T行,每行输入一个实数Y。

    输出

    对于每一个Y,输出方程在区间[0,100]的解,结果精确到小数点后4位。如果不存在解,输出:“No solution!”。

    样例输入

    2
    100
    -4
    

    样例输出

    1.6152
    No solution!
    

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    double f(double x)
    {
        return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;
    }
    double dao(int y,double l,double h)
    {
        //cout<<"y="<<y<<"  l="<<l<<"  h="<<h<<endl;
        double mid=(l+h)/2;
        if(h-l>=10e-7)
        {
            //cout<<"h-l="<<h-l<<"  mid="<<mid<<"  f(mid)="<<f(mid)<<endl;
            if(f(mid)==y)
            {
                return mid;
            }
            if(f(mid)>y)
                return dao(y,l,mid);
            if(f(mid)<y)
                return dao(y,mid,h);
        }
        return mid;
    }
    int main()
    {
        int n,y;
        cin>>n;
        while(n--)
        {
            cin>>y;
            if(y<f(0)||y>f(100))
                cout<<"No solution!"<<endl;
            else
            {   
                printf("%0.4lf
    ",dao(y,0,100));
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Unity3D AssetBundle相关
    [转]Unity3D新手引导开发手记
    努力多彩
    js sendBeacon
    js document.activeElement及使用
    js requestAnimationFrame
    js 1+'2' == '1'+'2'
    js scrollIntoViewIfNeeded
    汉字 3个字节
    js 浅拷贝和深拷贝
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11206039.html
Copyright © 2011-2022 走看看