Audio 牛客等级之题N2(8.18场)

*# Audio 牛客等级之题N2(8.18场)
链接:https://ac.nowcoder.com/acm/contest/7142/A
来源:牛客网

题目描述

Nancy很喜欢音乐。
她能同时分辨出三种不同的音乐。恰巧,一座城市中有三处同时有交响音乐会(音源响度相同)。但是Nancy每一场都不想错过,于是她想寻找一个地点,使得三处音乐会声音的响度相同,这样她就可以同时欣赏三场音乐会啦!
(注:假设声音传播过程中不会受障碍物作用,声音传播满足平方反比定律)

输入描述:

共三行:每行两个整数xix_ixi与yiy_iyi,三点不共线。
数据满足:0≤∣xi∣,∣yi∣≤10^9 。

输出描述:

共一行:两个实数posx,posypos_x, pos_yposx,posy,表示Nancy欣赏音乐会的地点(保留三位小数)

示例1

输入

0 0
1 3
4 2

输出

2.000 1.000

分析

读完题目,我们可以很清楚的知道这道题目要我们求的就是三角形的外心,那么什么是三角形的外心呢?

三角形外心

定义

三角形外心是指三角形外接圆的圆心,也就是三角形三边垂直平分线的交点,三角形的三个顶点就在这个外接圆上。

求法

解法一:
设三角形三边及其对角分别为a、b、c,∠A、∠B、∠C
正弦定理有r=a/(2sinA)=b/(2sinB)=c/(2sinC)
r=abc/(4S△ABC)
三角形外心的向量关系
向量PA的模=向量PB的模=向量PC的模(ABC为三角形三个顶点,P为外心)
解法二:
给定a(x1,y1) b(x2,y2) c(x3,y3)求外接圆心坐标O(x,y)
1、首先,外接圆的圆心是三角形三条边的垂直平分线的交点,我们根据圆心到顶点的距离相等,可以列出以下方程:
(x1-x)(x1-x)+(y1-y)(y1-y)=(x2-x)(x2-x)+(y2-y)(y2-y);
(x2-x)(x2-x)+(y2-y)(y2-y)=(x3-x)(x3-x)+(y3-y)(y3-y);
2、化简得到:
2*(x2-x1)x+2(y2-y1)y=x22+y2-x12-y2;
2*(x3-x2)x+2(y3-y2)y=x32+y32-x22-y22;
令:A1=2*(x2-x1);
B1=2*(y2-y1);
C1=x22+y22-x12-y12;
A2=2*(x3-x2);
B2=2*(y3-y2);
C2=x32+y32-x22-y22;
即:A1x+B1y=C1;
A2
x+B2y=C2;
3、最后根据克拉默法则:
x=((C1B2)-(C2B1))/((A1B2)-(A2B1));
y=((A1C2)-(A2C1))/((A1B2)-(A2B1));
因此,x,y为最终结果;

解法

通过分析可以得出三角形的外心的两个求法,我们可以利用解法二来解答本题,代码如下:

代码

x1,y1 = input().split(" ")
x2,y2 = input().split(" ")
x3,y3 = input().split(" ")
x1,x2,x3,y1,y2,y3 = float(x1),float(x2),float(x3),float(y1),float(y2),float(y3)
A1 = 2 * (x2 - x1)
B1 = 2 * (y2 - y1)
C1 = x2**2 + y2**2 - x1**2 - y1**2
A2 = 2 * (x3 - x2)
B2 = 2 * (y3 - y2)
C2 = x3**2 + y3**2 - x2**2 - y2**2
x = ((C1 * B2) - (C2 * B1))/((A1 * B2) - (A2 * B1))
y = ((A1 * C2) - (A2 * C1))/((A1 * B2) - (A2 * B1))
#注意输出格式,保留三位小数
print('%.3f'%x,'%.3f'%y)

个人博客:个人博客地址*

猜你喜欢

转载自blog.csdn.net/Twinkle_sone/article/details/108090382
今日推荐