码迷,mamicode.com
首页 > 其他好文 > 详细

杭电oj1374

时间:2020-02-28 23:09:11      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:turn   a*   while   Fix   fixed   否则   接收   类型   杭电oj   

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

三角形三边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

标签:turn   a*   while   Fix   fixed   否则   接收   类型   杭电oj   

原文地址:https://www.cnblogs.com/ljysy/p/12380513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!