The Circumference of the Circle ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=2242

公式推导过程如下:

设任意一个三角形的三边为a, b, c, 边a所对的角为A. 所求外接圆半径为R

根据任意三角形面积公式, 得到        bcsinA/2 = S

再根据正弦定理, 得到            2R= a/sin A;

两式一除, 得到          (bc/2) / (2R) = S/a

整理, 就得到            R = abc/(4S)

代码如下:

#include<stdio.h>
#include<math.h>
#define pi 3.141592653589793
int main()
{
    double a,b,c;
double x1,x2,x3,y1,y2,y3;
double sinA,cosA,r;
while(scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
{
   a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
        b=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
   c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
   cosA=(b*b+c*c-a*a)/(2*b*c);
   sinA=sqrt(1-cosA*cosA);
   r=a/sinA;
   printf("%.2f\n",pi*r);
}
return 0;
}

posted on 2011-05-06 19:38  _Clarence  阅读(121)  评论(0编辑  收藏  举报

导航