首页 > 学院 > 开发设计 > 正文

HDU - 2199 Can you solve this equation? 二分

2019-11-10 16:52:34
字体:
来源:转载
供稿:网友

Can you solve this equation?

Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100; Now please try your lucky.

Input

The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);

Output

For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.

Sample Input

2 100 -4

Sample Output

1.6152 No solution!

这个题目唯一值得说的就是很明显这个函数单增,端点值也很好求,直接判断完之后二分就好,其它没啥好说的了

#include <cmath>#include <iostream>using namespace std;double f(double x);int main(){ int t,y; double min,max,mid; cin>>t; while(t--){ cin>>y; if(y<6||y>=807020306){ cout<<"No solution!"<<endl; }else{ min=0; max=100; do{ mid=(min+max)/2; if(f(mid)>y){ max=mid; }else{ min=mid; } }while(fabs(f(mid)-y)>1e-6); PRintf("%.4f/n",mid); } } return 0;}double f(double x){ return 8*pow(x,4) + 7*pow(x,3) + 2*pow(x,2) + 3*x + 6; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表