因爲只做過二分題目,三分沒做過,編程之美2013初賽跪了。賽後找個練手,結果發下poj3737,就是數學推導,無語......看來還得再找個練練.......
題意:求一個面積爲s的圓錐體的最大體積,以及對應的底面半徑和高。
思路:基礎幾何。注意面積 s = s側面+s底面。對於PI,以後就取PI=acos(-1.0)。
S=pi*r*l + pi*r*r
l=sqrt(r*r+h*h), 聯立得, r*2= s*s/(pi*pi*h*h+2*pi*s)
V=(1/3)*pi*r*r*h,代入r*2,求導,令一階導數爲0,得出結果
h=sqrt(2*s/pi)
r=sqrt(s*s/(pi*pi*h*h+2*pi*s))
v=(1.0/3.0)*(s*s)*h/(pi*h*h+2*s)
我的代碼:
#include <iostream>
#include <cmath>
#include <cstdio>
#define PI acos(-1.0)
using namespace std;
int main()
{
double s, h, v, r;
while ( scanf("%lf", &s) != EOF )
{
r = sqrt(s/PI)/2;
h = sqrt(2*s/PI);
v = 1.0/3*PI*r*r*h;
printf( "%.2lf\n%.2lf\n%.2lf\n", v, h, r);
}
}