Uva--375 (几何,精度处理)
2014-06-12 23:14:36
题意&思路:在等腰三角形内由底向上,堆叠内切圆,算出总周长。(TAT精度判断方法是测样子强行测出来的,谁会想到判断要在while里面,遇到r < 0.000001的就不算!另外printf(%13.6lf\n") 这里里面13表示数值总长(包括小数点),6表示小数点后位数)#include <cstdio> #include <cmath> #include <iostream> using namespace std; const double INF_MIN = 0.000001; const double PI = acos(-1.0); int main(){ double B,H,r,Rsum; int t; scanf("%d",&t); while(t--){ Rsum = 0; scanf("%lf %lf",&B,&H); while(1){ r = B * H / (B + sqrt(B * B + 4 * H * H)); if(r < INF_MIN) break; Rsum += r; B = B * (H - r - r) / H; H -= (r + r); } printf("%13.6lf\n",2.0 * PI * Rsum); if(t) puts(""); } return 0; }