UPC2217: Rescue The Princess

网友投稿 849 2022-08-31

UPC2217: Rescue The Princess

UPC2217: Rescue The Princess

2217: Rescue The Princess

Time Limit: 1 Sec   Memory Limit: 128 MB

Submit: 422

Solved: 173

[

​​Submit​​][

​​Status​​][

​​Web Board​​]

Description

Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry  the princess set out immediately. Yet, the beast set a maze. Only if the prince find out the maze’s exit can he save the princess.

Now, here comes the problem. The maze is a dimensional plane. The beast is smart, and he hidden the princess snugly. He marked two coordinates of an equilateral triangle in the maze. The two marked coordinates are A(x1,y1) and B(x2,y2). The third coordinate C(x3,y3) is the maze’s exit. If the prince can find out the exit, he can save the princess. After the prince comes into the maze, he finds out the A(x1,y1) and B(x2,y2), but he doesn’t know where the C(x3,y3) is. The prince need your help. Can you calculate the C(x3,y3) and tell him?

Input

The first line is an integer T(1 <= T <= 100) which is the number of test cases. T test cases follow. Each test case contains two coordinates A(x1,y1) and B(x2,y2), described by four floating-point numbers x1, y1, x2, y2 ( |x1|, |y1|, |x2|, |y2| <= 1000.0).

Please notice that A(x1,y1) and B(x2,y2) and C(x3,y3) are in an anticlockwise direction from the equilateral triangle. And coordinates A(x1,y1) and B(x2,y2) are given by anticlockwise.

Output

For each test case, you should output the coordinate of C(x3,y3), the result should be rounded to 2 decimal places in a line.

Sample Input

4-100.00 0.00 0.00 0.000.00 0.00 0.00 100.000.00 0.00 100.00 100.001.00 0.00 1.866 0.50

Sample Output

(-50.00,86.60)(-86.60,50.00)(-36.60,136.60)(1.00,1.00)

HINT

Source

​​2013年山东省第四届ACM大学生程序设计竞赛​​

#include#includeconst double PI = acos(-1);using namespace std;int main(){ int n; scanf("%d",&n); while(n--) { double x[3],y[3]; scanf("%lf%lf%lf%lf",&x[0],&y[0],&x[1],&y[1]); double l = sqrt( (x[1]-x[0])*(x[1]-x[0]) + (y[1]-y[0])*(y[1]-y[0]) ); double R = atan2( y[1]-y[0], x[1]-x[0] ); x[2] = x[0]+l*cos( PI/3.0 + R ); y[2] = y[0]+l*sin( PI/3.0 + R ); printf("(%.2lf,%.2lf)\n",x[2],y[2]); } return 0;}

这题好多解法都没弄懂

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Atan2
下一篇:云原生的浪潮下,为什么运维人员适合学习Go语言?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~