题意:
已知等腰三角形的高H,底边长B,这时有一个内切圆C,
以内切圆C和长度为B对应的角的角平分线的交点做切线.
切线与角平分线相交,此时切线,和俩边又会出现一个小的等腰三角形,也有一个小的内切圆C1,内切圆一直往上堆,直到内切圆的半径r<0.000001
计算内切圆,C0,C1...Cn的周长和,最后一个内切圆r>0.000001
画图,利用面积相等推算公式
#include<stdio.h> #include<iostream> #include <strstream> #include<string> #include<memory.h> #include<math.h> #include<sstream> using namespace std; #define pi M_PI; int main() { //freopen("d:\\1.txt", "r", stdin); int t; cin>>t; while(t--) { double B,H; cin>>B>>H; double b = B/2; double a; double r = b*H/(a+b); double sum = 0.0; while(r>0.000001) { a = sqrt(H*H+b*b); r = b*H/(a+b); if(r<0.000001) break; sum += M_PI*2*r; H = H-2*r; b = (a-b)*b/(a+b); } printf("%13.6f\n",sum); if(t) printf("\n"); } }