ACM Strange fuction
现在,这里有一个功能:
F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)
当x在0到100之间时,你能找到最小值吗?
F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)
当x在0到100之间时,你能找到最小值吗?
输入
第一行包含一个整数T(1 < = T < = 100),这意味着测试用例的数量。然后T行,每一行只有一个实数Y。(0 < Y < 1e10)当x在0到100之间时,输出值为最小值(精确到小数点后4位)。
Sample Input
2 100 200
Sample Output
-74.4291 -178.8534
1 #include<bits/stdc++.h> 2 using namespace std; 3 double del(double mid) /*求导*/ 4 { 5 double temp = 42*pow(mid,6)+48*pow(mid,5)+21*mid*mid+10*mid; 6 7 return temp; 8 } 9 10 double cacu(double mid ,double y) 11 { 12 double ans; 13 ans = 6*pow(mid,7)+8*pow(mid,6)+7*pow(mid,3)+5*mid*mid-y*mid; 14 return ans; 15 } 16 int main() 17 { 18 int t; 19 double y; 20 while(cin>>t) 21 { 22 while(t--) 23 { 24 scanf("%lf",&y); 25 double left = 0,right = 100,mid; 26 while( right-left >1e-7) 27 { 28 mid =(left+right) /2; 29 if(del(mid) - y > 0) 30 right = mid; 31 else 32 left = mid; 33 } 34 printf("%.4lf\n",cacu(mid,y)); 35 } 36 37 } 38 return 0; 39 }