等腰三角形的内切圆,再在内切圆的基础上做内切圆,此内切圆圆前一个内切圆相切,以此类推,直到内切圆的半径达到所要的精度!
#include<stdio.h>
#include<math.h>
const double pi=4.0*atan(1.0);
int main()
{
double H,B,a,b,r,n;
scanf("%lf\n",&n);
while(n--)
{
scanf("%lf%lf\n",&B,&H);
double sum=0;
b=B/2;
a=sqrt(H*H+b*b);
r=(B*H)/(B+2*a);
while(r>=0.000001)
{
sum=sum+2*pi*r;
B=B*(H-2*r)/H;
H=H-2*r;
b=B/2;
a=sqrt(H*H+b*b);
r=(B*H)/(B+2*a);
}
printf("%13.6lf\n",sum);
if(n) printf("\n");
}
return 0;
}