onecode题库10202 : 方程的解

10202 : 方程的解
时间限制: 1000 MS 内存限制: 131072 KB 提交总数: 49 AC总数: 13
问题描述
这是一道简单的数学题,有这样一个方程:x^3-5x^2+10x-80=y,告诉你y的值,你能求出根x1的值么?
输入格式
输入一个整数y,y的取值范围在[-80,80]。
输出格式
输出方程的根x1,保留6位小数
样例输入
0
样例输出
5.705086

此题可以暴力枚举,但是可以用二分,效率大大提高。

#pragma GCC optimize(2)//优化,NOIP时不可用!!!
#include<algorithm>
#include<bits/stdc++.h>
#define N 1000010
using namespace std;
double EPS=1e-7,k,y;
double d(double x)
{
    return  x*x*x-5*x*x+10*x-80-y;
}
int main()
{    
    cin>>y;
    ios::sync_with_stdio(false);
    double mid,left=0,right=200.0;  
    mid=left+(right-1)/2.00;
    k=d(mid);
    while(right-left>EPS)
    {
        mid=(left+right)/2.00;
        if(d(mid)>0) {  
            right=mid;

        }

        else
        {
        if(d(mid)<0)
        {
            left=mid;
        }


            else break; 
        }          
    }
    printf("%.6lf",mid);
    return 0;
}
原文地址:https://www.cnblogs.com/wuzetian/p/9900410.html