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