给你个函数,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 " ,solve(y)); } return 0; }