蓝桥杯题目 1111: Cylinder(C语言)

题目 1111: Cylinder

时间限制: 1Sec 内存限制: 128MB 提交: 1567 解决: 607

题目描述

‎使用一张纸和剪刀,您可以剪出两个面,以以下方式形成一个圆柱体:‎


‎水平切割纸张(平行于较短的一侧),以获得两个矩形部分。‎
‎从第一部分开始,切出最大半径的圆‎
‎圈。圆圈将形成圆柱体的底部。‎
‎将第二部分向上滚动,使其周长与圆周相等,并将卷的一端连接到圆圈‎
‎上。请注意,卷可能有一些重叠的部分,以获得所需的周长。‎
‎鉴于纸张的尺寸,您能否计算出使用上述程序可以构造的圆柱体的最大体‎
‎积?‎

输入

‎输入由几个测试案例组成。每个测试案例由两个w和h(1≤w ≤h≤100)组成,表示纸张的宽度和高度。‎
‎最后一个测试案例后面是包含两个零的‎
‎行。‎

输出

‎对于每个测试案例,打印一条线,其中可能的最大音量为气缸。将此数字在小数点后循环到 3 位。‎

样例输入
<span style="color:#333333"><span style="color:#333333">10 10
10 50
10 30
0 0

</span></span>
样例输出
<span style="color:#333333"><span style="color:#333333">54.247
785.398
412.095</span></span>

 思路:

没啥思路(直白),就是个数学题,画画图分情况讨论吧。

可以参考这个大佬的解释:https://blog.dotcpp.com/a/2608

 实现代码:

#include <stdio.h>
#define PI 3.1415926535897932
int main()
{
	double w,h,r,r1,r2;/*r1:结果1,r2:结果2*/
	while(scanf("%lf%lf",&w,&h))
	{
		if(w==0&&h==0)
		break;
		r=h/(2*PI+2);/*以h-2r为周长时,w为圆柱的高*/
		if(r*2>w)
		{
			r=w/2;
		}
		r1=PI*r*r*w;
		r=w/(2*PI);/*以w为圆柱的周长*/
		r2=PI*r*r*(h-2*r); 
		/*输出结果*/
		printf("%.3lf\n",(r1>r2)?r1:r2);
	}
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/with_wine/article/details/114214697