首页 > 其他 > 详细

ZOJ 1090 The Circumference of the Circle

时间:2014-02-27 22:40:06      阅读:560      评论:0      收藏:0      [点我收藏+]

原题链接

题目大意:已知三角形的三个顶点坐标,求其外接圆的周长。

解法:刚看到这道题时,马上拿出草稿纸画图,想推导出重心坐标,然后求出半径,再求周长。可是这个过程太复杂了,写到一半就没有兴致了,还是求助于Google。在Wiki百科找到一个已知三条边长度,求外接三角形周长的算法,diameter = abc/2*(sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2。问题瞬间简化了,求两点距离是很方便的一件事,然后套用这个公式就可以了。

 

参考代码:

#include<iostream>
#include<iomanip>
#include<cmath>
#define PI 3.141592653589793
using namespace std;

double distance(double x1,double y1,double x2,double y2);

int main(){
	double x1,x2,x3,y1,y2,y3;
	double C,d,xx,yy,a,b,c;

	while(cin>>x1>>y1>>x2>>y2>>x3>>y3){
		a=distance(x1,y1,x2,y2);
		b=distance(x2,y2,x3,y3);
		c=distance(x3,y3,x1,y1);
		d=2*a*b*c/(sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c)));
		C=d*PI;
		cout<< fixed << setprecision(2) <<C<<endl;
	}
	return 0;
}

double distance(double x1,double y1,double x2,double y2){
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}



/*

en.wikipedia.org/wiki/Circumscribed_circle

diameter = abc/2*(sqrt(s(s-a)(s-b)(s-c))
s=(a+b+c)/2

*/

ZOJ 1090 The Circumference of the Circle,布布扣,bubuko.com

ZOJ 1090 The Circumference of the Circle

原文:http://www.cnblogs.com/naive/p/3568772.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!