浙大第十五屆校賽 G-Cylinder Candy,浙大g-cylinder
| Cylinder CandyTime Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Edward the confectioner is making a new batch of chocolate covered candy. Each candy center is shaped as a cylinder with radiusr mm and height h mm. The candy center needs to be covered with a uniform coat of chocolate. The uniform coat of chocolate isd mm thick. You are asked to calcualte the volume and the surface of the chocolate covered candy. InputThere are multiple test cases. The first line of input contains an integer T(1≤ T≤ 1000) indicating the number of test cases. For each test case: There are three integers r, h, d in one line. (1≤r, h, d ≤ 100) OutputFor each case, print the volume and surface area of the candy in one line. The relative error should be less than 10-8. Sample Input21 1 11 3 5 Sample Output32.907950527415 51.1551353380771141.046818749128 532.235830206285
|
比賽的時候,到最後一分鐘才算出體積,而且還是靠隊友助攻,但是當時不是用微積分做的,畢竟文科生,微積分還是有點弱的,經大神指導,總算自己推了出來。
下面附上推導過程,曲線表面積那個公式只能死記硬背咯,我也不知道怎麼證明。
公式推匯出來了,代碼就好辦啦~~~
#include <cstdio>#include <cstring>#include <iostream>#include <cmath>using namespace std;#define ll long longconst double PI = acos(-1);int main(){ double r , h ,d; int T; scanf("%d" , &T); while(T--) { scanf("%lf%lf%lf" , &r , &h , &d); double V = 2*PI*(2.0/3*d*d*d + r*r*d + 0.5*PI*d*d*r)+PI*(r+d)*(r+d)*h; double S = 2*PI*(2*d*d+PI*d*r) + 2*PI*r*r + 2*PI*(r+d)*h; printf("%.12f %.12f\n" , V , S); } return 0;}
要好好學數學了...