题目
分析
给一等腰三角形的底和高,自底向上持续内接圆,直至其内接圆半径小于1e-6
。
思路
利用相似三角形
递推。
代码
#include <stdio.h>
#include <math.h>
int main(void)
{
const double pi = asin(1.0) * 2;
int t;
double b, h, r, s, k;
scanf("%d", &t);
while (t--) {
scanf("%lf%lf", &b, &h);
r = (b * h)/(b + sqrt(b * b + 4 * h * h));
k = 1 - (r * 2)/ h;
s = 0;
while (r >= 1e-6) {
s += r;
r *= k;
}
printf("%13.6lf\n", (pi * s)* 2);
if (t) printf("\n");
}
return 0;
}