POJ 3737 小數學題

因爲只做過二分題目,三分沒做過,編程之美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)

以上解題思路轉載(懶得寫了,原作寫的很好):http://blog.sina.com.cn/s/blog_6635898a0100ohhi.html


我的代碼:

#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);
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章