• Hdoj 2199.Can you solve this equation? 题解


    Problem Description

    Now,given the equation 8x^4 + 7x^3 + 2x^2 + 3x + 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!
    

    Author

    Redow


    思路

    这个问题可以用二分法解决,因为给定的函数是单调的,所以可以根据要求的精度不断二分找答案

    详见代码

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    double f(double x)
    {
    	return 8*x*x*x*x + 7*x*x*x + 2*x*x + 3*x + 6 ;
    }
    	
    int main() 
    {
    	int n;
    	cin >> n;
    	while(n--)
    	{
    		double t;
    		cin >> t;
    		double l = 0, r = 100.0;
    		if(t<f(0) || t>f(100.0))
    		{
    			cout << "No solution!
    ";
    			continue;
    		}//因为函数单调,所以可以这么判断
    		double mid;	
    		while(r-l>1e-8)
    		{
    			mid = (l+r)/2;
    			double ans = f(mid);
    			if(ans>t)
    				r = mid;
    			if(ans<t)
    				l = mid;
    		}
    		printf("%.4lf
    ",l);
    	}
    	return 0;
    }
    
  • 相关阅读:
    PyQt4信号与槽
    Amazon Redshift数据库
    NoSQL数据库的认识
    如何划分子网
    VPC见解
    Linux之添加交换分区
    MySQL基础之 标准模式通配符
    MySQL基础之 LIKE操作符
    MySQL基础之 AND和OR运算符
    MySQL基础之 索引
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/9961719.html
Copyright © 2020-2023  润新知