2100200Sample Output-74.4291-178.8534
這道題在做的時候,最開始覺得這個函數應該是用三分法解決,但是用了之后,會發現怎么都ac不了,都是
wa,然后在網上查完資料之后,發現這道題就應該是先求導,之后再根據導數的正負,來運用二分法解決問
題,因為我們要求的是一個最值而跟極值的概念還是有不同的,之后將過程實現,就可以ac了,這道題感覺
就是可以運用數學知識解決問題
#include<iostream>#include<cmath>#include<cstdio>using namespace std;double cal(double x,double y){ //6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) return(6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x);}double cal_d(double x,double y){ return(42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y);}int main(){ int times; cin>>times; while(times--) { long long y_get; cin>>y_get; double low = 0,high = 100; double mid; while(low<high-0.000001) { mid = (low+high)/2; if(cal_d(mid,y_get)>0) high = mid; else low = mid; } PRintf("%.4f/n",cal(mid,y_get)); }}
新聞熱點
疑難解答