http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=311

 

题意很简单,等腰三角形,给了高和底长,三角形求内接圆,求周长,再把下面的和内接圆最上面相切的去掉,又是一个等腰三角形,再重复.....直至内接圆半径小于给定值.

学到的东西:

1.三角形内接圆半径 r=2*S/L   S为面积,L为周长.很简单,三个小部分相加即大三角形.

2.圆周率在c里面要这样 const double PI=acos(-1.0);    那个函数在math.h里面

    0<=double acos(double x)<=PI    -1<=x<=1,    这个函数就是返回一个数值的反余弦弧度值而cos(PI)=-1.看图,好久不见啊,你好你好!

    

    

#include <stdio.h>
#include <math.h>

const double PI=acos(-1.0);

int main(void)
{
    int cas;
    scanf("%d",&cas);
    while (cas--)
    {
        double b,h,LSum=0;
        scanf("%lf %lf",&b,&h);

        double BOrigin=b,HOrigin=h;

        while (1)
        {
            double rtemp;
            rtemp=(b*h)/(b+sqrt(b*b+4*h*h));

            if (rtemp<0.000001)
            {
                break;
            }

            LSum+=2*PI*rtemp;

            h=h-2*rtemp;
            b=BOrigin/HOrigin*h;
        }

        printf("%13.6f\n",LSum);
        if (cas)
        {
            putchar('\n');
        }
    }
    return 0;
}

 

posted on 2013-05-05 21:24  简单的信仰  阅读(284)  评论(0编辑  收藏  举报