http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=311
题意很简单,等腰三角形,给了高和底长,三角形求内接圆,求周长,再把下面的和内接圆最上面相切的去掉,又是一个等腰三角形,再重复.....直至内接圆半径小于给定值.
学到的东西:
1.三角形内接圆半径 r=2*S/L S为面积,L为周长.很简单,三个小部分相加即大三角形.
2.圆周率在c里面要这样 const double PI=acos(-1.0); 那个函数在math.h里面
0<=double acos(double x)<=PI -1<=x<=1, 这个函数就是返回一个数值的反余弦弧度值而cos(PI)=-1.看图,好久不见啊,你好你好!
#include <stdio.h> #include <math.h> const double PI=acos(-1.0); int main(void) { int cas; scanf("%d",&cas); while (cas--) { double b,h,LSum=0; scanf("%lf %lf",&b,&h); double BOrigin=b,HOrigin=h; while (1) { double rtemp; rtemp=(b*h)/(b+sqrt(b*b+4*h*h)); if (rtemp<0.000001) { break; } LSum+=2*PI*rtemp; h=h-2*rtemp; b=BOrigin/HOrigin*h; } printf("%13.6f\n",LSum); if (cas) { putchar('\n'); } } return 0; }