B

来源:互联网 发布:mac ntfs读写插件 免费 编辑:程序博客网 时间:2024/04/27 15:09
题意:求方程   f(x) =  6 * x^7+8*x^6+7*x^3+5*x^2-y*x   的最小值


思路:可以借鉴第一题的思路,用二分法做题,在搜索,还是比较好的,
还有一种偷懒的方法,就是求倒数,这是一个在 0——100上的递增函数,然后再求倒数等于0时刻的x的值的大小,方法同上





#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double get(double mid,double y)
{
    return 6*pow(mid,7)+8*pow(mid,6)+7*pow(mid,3)+5*mid*mid-mid*y;
}
double get1(double mid)
{
    return 42*pow(mid,6)+48*pow(mid,5)+21*pow(mid,2)+10*mid;
}
double get0(double y)
{
    double mid,low,high;
    low=0,high=100;
    while(high>low+0.0000001)
    {
        mid=(high+low)/2;
        if(get1(mid)<y)
        low=mid+0.0000001;
        else high=mid-0.0000001;
    }

    return mid;
}


int main()
{
    int T;
    double Y;
    cin>>T;
    while(T--)
    {
         cin>>Y;
         cout<<setiosflags(ios::fixed)<<setprecision(4)<<get(get0(Y),Y)<<endl;
    }
    return 0;
}
0 0
原创粉丝点击