Kevin


私信TA

用户名:137310853

访问量:9854

签 名:

大自然的搬运工

等  级
排  名 2275
经  验 2354
参赛次数 2
文章发表 8
年  龄 19
在职情况 学生
学  校 东莞理工学院
专  业 软件工程

  自我简介:

排名全靠刷 代码全靠偷

解题思路:
QQ截图20171015111216.jpg

注意事项:
一定要注意,用户输出的不一定是整数,有可能是小数,所以w和h要用double型,

如果用int型提交了之后会是答案错误。

参考代码:

#include <stdio.h>
#define PI 3.141592653589793238

int main()
{
    double w, h, r, result1, result2;
    while(scanf("%lf%lf", &w, &h) == 2 && w != 0)
    {
        r = w / (2 * PI);//第一种情况
        result1 = PI * r * r * (h - 2 * r);
        r = h / (2 * PI + 2);
        r = r * 2 > w ? w / 2 : r;//第二种情况
        result2 = PI * r * r * w;
        printf("%.3f\n", result1>result2 ? result1:result2);
    }//输出两种情况算出来的最大者即可
    return 0;
}


 

0.0分

30 人评分

  评论区

穷举咋咋整咋不对呢.
2024-01-27 15:35:54
原题描述跟特么shi一样,这是考阅读理解呢?
2020-09-17 19:40:01
一定要注意精确度,这个题就大坑,多精确少精确都过不了
2020-04-28 12:07:07
第一种情况如果r取w/2,凭什么就断定H-2r就一定大于等于2*pi*r??????
2020-04-20 19:45:30
scanf("%lf%lf", &w, &h) == 2  有人能告诉我这个代码是意思吗?主要是等于2不懂
2020-02-20 10:53:06
这个还要考虑r,最后算出来的直径2*r可能大于w,所以应该比较2*r与w
2020-01-30 17:38:40
为什么我第二个测试数据是1114,别的都对
2019-07-02 22:00:57
#include<stdio.h>
#define PI 3.141592653589793238
int main()
{
    double h,w,result1,result2,r1,r2;
    while(scanf("%lf%lf", &h, &w)==2&&h!=0){
    	        //第一种情况,h固定为圆柱的高,r根据w切割而得 ,但是r的大小可能不合理
    	        r1=h/2;
    	        if(2*PI*r1>w-h){
    		        r1=w/(2*PI+2);//w=2*Pi*r+2*r=r*(Pi*2+2) 
	        }
    	        result1=PI*r1*r1*h;
    	
    	        // 第二种情况, w-2*r 固定为圆柱的高,约定h比w小,所有没有不合理的情况 
	        r2=h/(2*PI);
		result2=PI*r2*r2*(w-2*r2);
		printf("%.3lf\n",result1>result2?result1:result2);
	}
    return 0;
}
2019-04-02 18:19:54