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; }