标签:c++ iostream namespace 编程 博客
2 100 200
-74.4291 -178.8534
代码如下:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double Equ(double x,double Y)
{
    return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-Y*x;        //返回F(x)
}
int main()
{
    int T,i;
    double Y,low,high,t1,t2;
    cin>>T;
    while (T--)
    {
        cin>>Y;
        low=0,high=100;  
        for (i=1;i<=200;i++)                   //确定三分查找的次数
        {
            t1=(low+high)/2;
            t2=(t1+high)/2;                   //将0到100分为3份,逐渐缩小查找范围
            if (Equ(t1,Y)<Equ(t2,Y))
                high=t2;
            else
                low=t1;
        }
        cout<<setiosflags(ios::fixed)<<setprecision(4)<<Equ(t1,Y)<<endl;    //控制输出格式
    }
    return 0;
}
解题思路:
题目大意是输入Y,求F(x)在x属于【0,100】间的最小值。
用的是三分查找,二分查找也可以,但由于不确定F(x)在0到100间的单调性,所以还是三分查找更适用。
标签:c++ iostream namespace 编程 博客
原文地址:http://blog.csdn.net/liuchang54/article/details/43936155