地址:
点击打开链接
这个主要是药算斜率为0的点。如下代码
#include <iostream>
#include <iomanip>
#include<queue>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip>
#include<string.h>
#include<sstream>
#include<string>
#include<queue>
#define MAX 5842
//¶¨Ò庯Êý¶Î
#define repf(i,a,b) for(int i =(a);i<(b);i++)
#define repfe(i,a,b) for(int i =(a);i<=(b);i++)
using namespace std;
double getTemp(double a,double y)
{
return 6*pow(a,7)+8*pow(a,6)+7*pow(a,3)+5*pow(a,2)-y*a ;
}
double getTendency(double x ,double y){
return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;
}
double getRes(double left ,double right ,double y)
{
if(getTendency(100.0,y)<0)
{
return getTemp(100.0,y);
}
double res, mid = (left+right)/2;
if(fabs(getTendency(mid,y)-0)<1e-10)
{
return mid ;
}
else if(getTendency(mid,y)<0)
{
res =getRes(mid,right,y );
}else if(getTendency(mid,y)>0)
{
res =getRes(left,mid,y );
}
return res ;
}
int main() {
int num ;
double y ,res;
cin >> num ;
while(num--){
cin >> y ;
res = getRes(0.0,100.0,y);
printf("%.4lf\n",getTemp(res,y));
}
return 0 ;
}