思路:先求導得到:f(x)=42*x^6+48*x^5+21*x^2+10*x-Y 。然後根據數學知識,判斷F(x)的增減性。
然後根據Problem A的做法就ok了。(二分查找法)
代碼:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<stdlib.h>
using namespace std;
int main()
{
int T;
cin>>T;
for(int i=0;i<T;i++)
{
int Y;
cin>>Y;
double max=100;
double min=0;
if(42*pow(100,6)+48*pow(100,5)+21*pow(100,2)+10<Y)
cout<<setprecision(4)<<fixed<<100.0<<endl;
else if(0>Y)
{
cout<<setprecision(4)<<fixed<<0.0<<endl;
}
else{
while((max-min)>0.000001)
{
double x=(max+min)/2;
if(42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x>Y)
max=x;
else min=x;
if((max-min)<0.00001)
{
cout<<setprecision(4)<<fixed<<6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*x*x-Y*x<<endl;
break;
}
}
}
}
system("pause");
return 0;
}