题意:
给你个函数,F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,给你一个y,x的范围是0--100
问你最小的 F(x)
思路:
本人推数学公式啥的没啥天赋,一看这个题目肯定是三分(自己感觉),然后直接敲完就ac了,估计正解什么的还要转换这个公式...然后...在然后..最后求一下2阶导函数,根据二阶但函数的正负判断什么凹凸性什么的(自己感觉),抱歉.....
#include<stdio.h>
#include<math.h>
#define eps 1e-9
double Fun(double x ,double y)
{
return 6.0 * pow(x ,7.0) + 8 * pow(x ,6.0) + 7 * pow(x ,3.0) + 5 * pow(x ,2.0) - x * y;
}
double solve(double y)
{
double low ,up ,mid ,mmid;
double f1 ,f2;
low = 0 ,up = 100.0;
while(1)
{
mid = (low + up) / 2;
mmid = (mid + up) / 2;
f1 = Fun(mid ,y);
f2 = Fun(mmid ,y);
if(f1 > f2) low = mid;
else up = mmid;
if(up - low < eps) break;
}
return f1;
}
int main ()
{
int t;
double y;
scanf("%d" ,&t);
while(t--)
{
scanf("%lf" ,&y);
printf("%.4lf\n" ,solve(y));
}
return 0;
}