ZOJ--3866(数学,定积分)

2015-04-14 19:23:17

思路:.... 大一的数学已经忘光光了,弱到爆表了QAQ!

  题意就是给一个圆柱体糖果包裹一层巧克力,而且每一处的巧克力厚度均为d,给出圆柱体r,h,求出整个物体的体积和表面积。

  其实就是裸的积分题了... 

  (<-- 截面图)(上圆台)

  (1)体积,我们发现难算的就是上下两侧面也为曲面的圆台。

     1/4圆弧所在圆的方程:, 得到:(式子①)

     如果将圆台按高度微分一下,就得到了一个微圆柱:,那么上圆台总体积为:

     带入式子①后,有以下过程(根号下积分参见第二类换元 y = dcost):

      

     总体积为:上圆台体积乘2,再加上中间的圆柱体,  

  (2)面积,难算的就是1/4圆弧绕 y 轴形成的表面积。

    如果将表面积按高度微分,就得到了一个微圆环的表面积:(为底面周长×侧面宽度)

    所以表面积:,展开后推导:

    

    所以总面积为:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <vector>
 6 #include <map>
 7 #include <set>
 8 #include <stack>
 9 #include <queue>
10 #include <string>
11 #include <iostream>
12 #include <algorithm>
13 using namespace std;
14 
15 #define MEM(a,b) memset(a,b,sizeof(a))
16 #define REP(i,n) for(int i=0;i<(n);++i)
17 #define FOR(i,a,b) for(int i=(a);i<=(b);++i)
18 #define getmid(l,r) ((l) + ((r) - (l)) / 2)
19 #define MP(a,b) make_pair(a,b)
20 
21 typedef long long ll;
22 typedef pair<int,int> pii;
23 const int INF = (1 << 30) - 1;
24 const double PI = acos(-1.0);
25 
26 int r,h,d;
27 int T;
28 
29 int main(){
30     scanf("%d",&T);
31     while(~scanf("%d%d%d",&r,&h,&d)){
32         double s = 2.0*PI * ((r+d)*h + r*r + d*(2*d+PI*r));
33         double v = 2.0*PI * (2.0*d*d*d/3 + r*r*d + r*d*d*PI/2.0) 
34             + PI*(r+d)*(r+d)*h;
35         printf("%.10f %.10f\n",v,s);
36     }
37     return 0;
38 }

 

posted @ 2015-04-14 23:53  Naturain  阅读(334)  评论(0编辑  收藏  举报