题目大意:给出一个等腰三角形的高和底边长,要求你求出所有内切圆的周长和
解题思路:等腰三角形底边长为B,高为H,设最底部的那个圆的半径为R,三角形的腰为L,由勾股定理得,L = sqrt(B * B / 4 + H * H),由等面积公式2 *( 0.5 * L * R + 0.5* B * R *0.5)= 0.5 * H * B,得R = H * B /( 2 * L + B),然后再由三角形的相似性质得下一个内切圆的半径
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
#define PI asin(1.0)*2
int main() {
double B, H, r, h, R, L;
int test;
scanf("%d",&test);
while(test--) {
scanf("%lf%lf",&B, &H);
L = sqrt(H * H + B * B/4);
R = B * H / ( 2 * L + B);
h = H;
r = R;
while(r >= 0.000001) {
h = h - 2 * r;
r = h * R / H;
}
printf("%13lf\n",(H-h) *PI);
if(test)
printf("\n");
}
return 0;
}