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;
}
浙公网安备 33010602011771号