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;
}