#include <iostream>#include<iomanip>#include <cstdio>#include <cmath>using namespacestd;#define eps 1e-8const double pi=acos(-1.0);double S;double cal(double x){ return(1.0/3.0)*x*sqrt(S*(S-(2*pi*x*x)));}int main(){ while(cin>>S) { double left=0.1,right=sqrt(S/2.0/pi); while(right-left>eps) { double middle=(left+right)/2; double middleright=(middle+right)/2; if(cal(middle)>cal(middleright)) right=middleright; else left=middle; } cout<<setPRecision(2)<<fixed<<cal(left)<<endl; cout<<setprecision(2)<<fixed<<sqrt(S*(S-2*pi*left*left))/pi/left<<endl; cout<<setprecision(2)<<fixed<<left<<endl; } return 0;}
本題的解題方向在于得出圓錐表面積和體積的關系,得到R的上限,并借此通過二分法求得使圓錐體積最大的半徑,進而得解,輸出時要注意格式。
新聞熱點
疑難解答