南邮 OJ 1068 烦恼的中学生

来源:互联网 发布:强制4g网络代码 编辑:程序博客网 时间:2024/04/27 13:26

烦恼的中学生

时间限制(普通/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;}}








0 0
原创粉丝点击