杭电oj1374

Posted ljysy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杭电oj1374相关的知识,希望对你有一定的参考价值。

该算法给出的题目就是根据已给出的三个点的坐标,求出所给三角形外切圆的周长,此题的关键是在于求出园的半径,如果按照普通的做法求出两条边的垂直平分线,再求出圆心,最后求出半径比较麻烦,可以直接用公式求出外切圆的周长公式如下:

三角形三边a,b,c,半周长p(p=(a+b+c)/2) 
面积:S= √[p(p - a)(p - b)(p - c)]
外接圆半径 R=abc/4S 
外接圆半径 R=abc/4√[p(p - a)(p - b)(p - c)] 
外接圆周长C=2*PAI*R

  其实这道题更偏向于数学题,最后给出代码

 

#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
	//三角形三边a,b,c,半周长p(p=(a+b+c)/2) 
    //面积:S= √[p(p - a)(p - b)(p - c)]
    //外接圆半径 R=abc/4S 
    //外接圆半径 R=abc/4√[p(p - a)(p - b)(p - c)] 
    //外接圆周长C=2*PAI*R
	double PI = 3.141592653589793;
	double x1, y1, x2, y2, x3, y3;
	while (cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3)
	{
		double a = sqrt((x1-x2)*(x1 - x2)+(y1-y2)*(y1-y2));
		double b = sqrt((x1 - x3)*(x1 - x3) + (y1 - y3)*(y1 - y3));
		double c = sqrt((x3 - x2)*(x3 - x2) + (y3 - y2)*(y3 - y2));
		double p = (a + b + c) / 2;
		cout << fixed << setprecision(2)<< 2 * PI*a*b*c / (4 * sqrt(p*(p - a)*(p - b)*(p - c))) << endl;

	}
	return 0;
}

指的注意的是在接收输入的三个点的坐标时要用double类型,否则虽然可以通过样例,但是会报错。  

以上是关于杭电oj1374的主要内容,如果未能解决你的问题,请参考以下文章

杭电OJ1002大数据相加

杭电oj2037——今年暑假不AC(java实现)

杭电oj_2035——人见人爱A^B(java实现)

进制转换————杭电oj 2031题(c语言解决)

杭电oj 1106

杭电oj-1001