您的位置:首页 > 其它

南邮 OJ 1068 烦恼的中学生

2015-08-04 10:18 169 查看

烦恼的中学生

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte

总提交 : 123            测试通过 : 62 


比赛描述

    很多学生都会找点兼职来赚点外快,Alfred也不例外,他找的兼职是家教。好了,现在Alfred的工作就是辅导一个高中生的数学。

    这一天,这位高中生叫Alfred帮忙做一下作业:在二维平面内给出一个三角形的三个顶点坐标,现在的任务是求出这个三角形的垂心,也就是三角形的三条高线所在直线的交点。

    当然,Alfred的数学是不错的,对于这么简单的问题,Alfred只用了半分钟就解决掉了,正当Alfred得意的时候,这位高中生却毫不吃惊地说:我们的作业一共有100条呢! Alfred听见了之后不禁倒抽了一口凉气,现在的中学生真命苦啊。

    所以,打抱不平的Alfred决定要帮这位高中生的忙:利用计算机程序来批量解决这个问题,但是Alfred苦思数日却没有想出来解决办法,你们能帮他这个忙吗?

输入

    第一行是一个整数C(C<=100),表示有C组测试数据,每组数据三行,每行两个浮点数分别表示三角形某个顶点的x,y坐标。所有坐标的绝对值<10000。输入保证三点不共线。

输出

     对于每组输入数据,输出两个浮点数xh, yh表示所给三角形垂心的纵横坐标,保留三位小数(四舍五入)。

样例输入

3

-10 0

0 10

10 0

-10 0

10 0

0 17.321

2 10

4 -5

20 6

样例输出

0.000 10.000

0.000 5.773

6.031 4.137

提示

请注意你的程序,避免输出-0.000的情况,这样系统会判错。(如果要输出一个极小的负数,如-0.000001,输出会变成-0.000,应该手动排除这种情况,确保这种时候输出0.000。)

题目来源

Internet

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int C;
long double x1,y1,x2,y2,x3,y3,X,Y;
cin>>C;
while(C--){
cin>>x1>>y1>>x2>>y2>>x3>>y3;
X = -(x1*x2*y1-x1*x3*y1-x1*x2*y2+x2*x3*y2+y1*y1*y2-y1*y2*y2+x1*x3*y3-x2*x3*y3-y1*y1*y3+y2*y2*y3+y1*y3*y3-y2*y3*y3)/(-x2*y1+x3*y1+x1*y2-x3*y2-x1*y3+x2*y3);
Y = -(x1*x1*x2-x1*x2*x2-x1*x1*x3+x2*x2*x3+x1*x3*x3-x2*x3*x3+x1*y1*y2-x2*y1*y2-x1*y1*y3+x3*y1*y3+x2*y2*y3-x3*y2*y3)/( x2*y1-x3*y1-x1*y2+x3*y2+x1*y3-x2*y3);
cout<<fixed<<setprecision(3);
cout<<X<<" "<<Y<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息