题目大意 给出锥形的表面积 求体积的最大值时 的体积 底面积 和高
很明显的一个单峰函数 三分法
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
const double eps=10e-6;
const double pi=acos(-1.0);
using namespace std;
double s;
double cal(double r)
{
double R = s/(pi*r)-r;
double h = sqrt(R*R-r*r);
return h*pi*r*r/3;
}
int main()
{
double left,right,mid1,v,v1,v2,mid2,r,h;
while(~scanf("%lf",&s))
{
left=0,right=s;
while(left+eps<right)
{
mid1=(left+right)/2;
mid2=(mid1+right)/2;
v1=cal(mid1);
v2=cal(mid2);
if(v1<v2)
left=mid1;
else
right=mid2;
}
r=left;
double R = s/(pi*r)-r;
h=sqrt(R*R-r*r);
v= h*pi*r*r/3;
printf("%.2f\n%.2f\n%.2f\n",v,h,r);
}
return 0;
}