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 }