1002 Problem B

来源:互联网 发布:淘宝永久模板在哪里买 编辑:程序博客网 时间:2024/06/08 10:52

题意:
给出一个函数F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x求他的最小值 其中 x大于0小于100,y由自己输入。输出保留四位小数。
思路:
与第一题差不多 区别是先将给出的函数求导 然后求含有x的那一部分取值为零的情况(与第一题相同) 最后输出的时候输出原函数的值,具体思路可以参考Problem A

#include <iostream>#include<fstream>#include<iomanip>using namespace std;double EPS=0.001;double fd(double x){    return 42 * x*x*x*x*x*x + 48 * x*x*x*x*x + 21 * x*x + 10 * x  ;}double f(double x, double b){    return 6 * x*x*x*x*x*x*x + 8 * x*x*x*x*x*x + 7 * x*x*x + 5 * x*x - b*x;}int main(){    int a;    cin >> a;    while (a--)    {        int b;        cin >> b;        double l=0,h=100,mid = 50;        double c=fd(mid)-b;        while (c>EPS||c<-EPS)        {            if (c > 0) h = mid, mid = (l + mid) / 2;            else l = mid, mid = (mid + h);            c = fd(mid) - b;        }        cout<<setprecision(4) <<setiosflags(ios::fixed)<< f(mid,b) << endl;    }    return 0;}
0 0