Can you solve this equation?

来源:互联网 发布:原车轮毂数据查询 编辑:程序博客网 时间:2024/06/07 23:59

Can you solve this equation?

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1308 Accepted Submission(s): 621 
Problem Description
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
2100-4
 
Sample Output
1.6152No solution!
一道简单的二分,注意上下线的关系就行了
#include<cmath>#include <iostream>#include<stdio.h>using namespace std;double gg(double x){    return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;    }int main(){    int t;    double n;    cin>>t;    while(t--)    {        cin>>n;        double low=0,high=100,mid;        if(gg(0)>n||gg(100)<n)            cout<<"No solution!"<<endl;        else {                    while(high-low>1e-10)                    {                        mid=(high+low)/2;                        if(gg(mid)<n)                            low=mid;                        else high=mid;                    }        printf("%.4lf\n",mid);                }    }    return 0;}

原创粉丝点击