http://acm.pku.edu.cn/JudgeOnline/problem?id=3365
给你一张长为H宽为w的纸,要求做一个体积最大的圆柱,并且使底面圆的半径尽量大!做法分两种情况,一种以w为底面圆的周长,一种以
H-2R为底面圆的周长,然后取最大值就好了
rookie的代码:
#include<stdio.h> #include<math.h> #include<algorithm> #define pi acos(-1.0) #define epx 1e-6 using namespace std; double w,h,v1,v2,temp,r,d; int main() { while(scanf("%lf%lf",&w,&h)&&(w+h)){ if(h>w){temp=h;h=w;w=temp;} v1=h*h*(w-h/pi)/(4.0*pi); //printf("%.3f/n",v1); d=w/(pi+1); if(d>h+epx){/*判断d是否符合条件*/ r=h/2.0; v2=pi*r*r*h; } else v2=pi*w*w*h/(4.0*(pi+1)*(pi+1)); printf("%.3f/n",max(v1,v2)); } return 0; }