zoukankan      html  css  js  c++  java
  • 枚举测试用例Cylinder(圆柱体)(枚举)

    废话就不多说了,开始。。。

        http://acmore.net/problem.php?id=1525

        1525: Cylinder(圆柱体)

        Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 14  Solved: 4

        Submit

        Status

        Web Board

        Description

        使用铰剪和一张纸,根据下面的步骤,可以剪出两个面来构成一个圆柱体:

        1 平行于最短边把纸剪成两个长方形;

        2 在第一长方形上,剪一个具有最大半径的圆,这个圆构成圆柱体的底.

        3 卷起第二个长方形,使它的周长等于上一步骤中圆的周长 ,并把圆桶的一端与圆粘在一同.(为了使卷起的圆桶的周长等于圆的周长,它可以有重叠的部份).给出纸张的宽度和高度,你能计算出通过上述方法做出的圆柱体的最大体积吗?

        Input

        输入包括几个测试用例,每一个测试用例包括两个数w and h (1 ≤ w ≤ h ≤ 100),表示纸张的宽度和高度,最后一个测试用例后有两个0. 

        Output

        对每一个测试用例,打印一行最大可能的圆柱体体积,通过四舍五入保留三个小数

        Sample Input

        10 10 10 50 10 30 0 0

        Sample Output

        54.247 785.398 412.095

        HINT

         PI = 3.141593

        Source

        

        Submit

        Status

        Web Board

        每日一道理
    只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获。只有追求,才会品味堂堂正正的人。

        Anything about the Problems, Please Contact Admin:admin 

        剖析:谁知道我一看到这道题就马上想到了数学里的函数求最大值来着。还列列了方程求导,求根等等,越想越�嗦。最后把这最简略的一道标题给错过了

        其实只要枚举一下情况就能够了

                                     h-2*r1

        枚举和测试用例枚举和测试用例枚举和测试用例     情况一     w      w

        r1=min(w/2.0,h/(2*pi+2));v1=pi*r1*r1*wl;

             情况二              h-2*r2

        枚举和测试用例枚举和测试用例枚举和测试用例               w

        r2=w/(2*pi) ,v2=pi*r2*r2*(h-2*r2);             

      //wronganswer:错的原因是因为标题没有看清楚,我把两种切法都考虑进去了,而标题只要求第一种切法

        #include <stdio.h>

        #include <math.h>

        #include <algorithm>

        #include <assert.h>

        using namespace std;

        const double pi= 2.0*acos(0.0);

        double max(double a,double b)

        {

        return a>b? a:b;

        }

        double min(double a,double b)

        {return a<b? a:b;

        }

        double volume(double r,double h)

        {

        return pi*r*r*h;

        }

        int main()

        {freopen("in.txt","r",stdin);

     freopen("out.txt","w",stdout);

        double w,h;

        double r1,r2,v1,v2,t;

        while(scanf("%lf%lf",&w,&h)!=EOF)

        {  if(w==0&&h==0)

            break;

            //r1=min(h/(2.0*pi+2.0),w/2.0);//竖切

            v1=volume(r1,w);

            r2=w/(2.0*pi);

            v2=volume(r2,h-2.0*r2);

            //printf("r1=%.3lf v1=%.3lf,r2=%.3lf,v2=%.3lf\n",r1,v1,r2,v2);

            t=max(v1,v2);

            r1=w/(2.0*pi+2.0);//横切

            v1=volume(r1,h);

            r2=h/(2.0*pi);

            v2=volume(r2,w-2.0*r2);

           // printf("r1=%.3lf v1=%.3lf,r2=%.3lf,v2=%.3lf\n",r1,v1,r2,v2);

            t=max(t,max(v1,v2));

            printf("%.3lf\n",t);

        }

        return 0;

        }

        //accept

        #include <stdio.h>

        #include <math.h>

        #include <algorithm>

        #include <assert.h>

        using namespace std;

        const double pi= 2.0*acos(0.0);

        double max(double a,double b)

        {

        return a>b? a:b;

        }

        double min(double a,double b)

        {return a<b? a:b;

        }

        double volume(double r,double h)

        {

        return pi*r*r*h;

        }

        int main()

        {

        double w,h;

        double r1,r2,v1,v2,t;

        while(scanf("%lf%lf",&w,&h)!=EOF)

        {  if(w==0&&h==0)

            break;

            r1=min(h/(2.0*pi+2.0),w/2.0);//竖切,即沿着h处切

            v1=volume(r1,w);

            r2=w/(2.0*pi);

            v2=volume(r2,h-2.0*r2);

            printf("%.3lf\n",t);

        }

        return 0;

        }

    文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
    一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

    --------------------------------- 原创文章 By
    枚举和测试用例
    ---------------------------------

  • 相关阅读:
    Java学习-043-获取文件在目录中的路径
    Java学习-042-获取目录文件列表(当前,级联)
    Java学习-041-颜色工具类(RGB,HEX)
    JS-011-颜色进制转换(RGB转16进制;16进制转RGB)
    Maven-010-maven 编译报错:Failure to ... in ... was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced.
    Maven-009-Nexus 用户密码加密(安全必须)
    Maven-008-Nexus 私服部署发布报错 Failed to deploy artifacts: Failed to transfer file: ... Return code is: 4XX, ReasonPhrase: ... 解决方案
    Fiddler-009-AutoResponder 简单的 MOCK SERVER 应用实例
    Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码
    Maven-006-手动部署第三方构件至 nexus 私服
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3098214.html
Copyright © 2011-2022 走看看