Description
一天,小清新用一些奇奇怪怪的工具绘制函数图像,玩得不亦乐乎,期间发现了一个函数: F(x) = 0.0001 x^5 + 0.003 x^3 + 0.5 x - 3 ,聪明的他一眼see穿了它的单调性,现在,小清新想标注一些点,已经写出了它们的 y 坐标值 ,聪明的你能帮助 可爱善良的小清新把对应的 x 坐标值找出来么。谢谢啦! 保证: -20 < x < 20 。答案精确到小数点后第5位。数据多组输入形式。
Input
(多组输入)每行一个实数 y
Output
每行一个四位小数 x
Accepted Code
//F(x) = 0.0001 x^5 + 0.003 x^3 + 0.5 x - 3
#include <bits/stdc++.h>
using namespace std;
#define esp 0.00001
double solve(double x)
{
return 0.0001*pow(x,5) + 0.003*pow(x,3)+ 0.5*x - 3;
}
int main()
{
double y;
while(~scanf("%lf",&y))
{
double l=-20,r=20;
while(solve((r+l)/2)-y>esp||solve((r+l)/2)-y<-esp)
{
if(solve((r+l)/2)-y>esp)
{
r=(l+r)/2;
}
else if (solve((r+l)/2)-y<-esp)
{
l=(l+r)/2;
}
if(r-l<=esp)
{
break;
}
}
printf("%.4lf\n",(r+l)/2);
}
return 0;
}

