POJ 3737 UmBasketella
来源:互联网 发布:编辑地图软件哪个最好 编辑:程序博客网 时间:2024/05/19 03:26
//POJ 3737 UmBasketella//AC by warteac//2013-7-23/* 对锥形地面半径三分找到体积最大 求高度判断高度是否可能存在;精度1e-3 WA,1e-4AC*/#include<iostream>#include<cstdio>#include<cmath>#include<iomanip>using namespace std;const double pi = acos(-1.0);const double eps = 1e-4;double s;//计算高度double getH(double r){ double l = s/r/pi - r; double h = l*l - r*r; if(h < 0) return 0; else return sqrt(h);}//计算体积double getV(double r){ double h = getH(r); if(h) return pi*r*r*h/3; else return 0;}//获得1/3处的点double getMid1(double l, double r){ return (2*l + r)/3;}//获得2/3处的点double getMid2(double l, double r){ return (l + 2*r)/3;}//三分double computing(){ double l = 0, r = sqrt(s/pi); double mid1, mid2,v1,v2; while(fabs(l - r) > eps){ mid1 = getMid1(l,r); mid2 = getMid2(l,r); v1 = getV(mid1); v2 = getV(mid2); if(v1 < v2) l = mid1; else r = mid2; } return getMid1(l,r);}int main(){ while(cin >> s){ double r = computing(); cout <<setiosflags(ios::fixed); cout << setprecision(2); cout << getV(r) << endl; cout << getH(r) << endl; cout << r << endl; } return 0;}