rescue the princess 省赛四1
2016-04-19 16:04
399 查看
Rescue The Princess
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 anequilateraltriangle
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?
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 theequilateraltriangle.
And coordinates A(x1,y1) and B(x2,y2) are given by anticlockwise.
to 2 decimal places in a line.
用到平面几何求解
x3=x1+L*cos(60°+angle);
y3=y1+L*sin(60°+angle);
angle=atan2(y2-y1,x2-x1);
60°化成弧度
const double PI=acos(-1.0);
而PI/3.0就是60°
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double PI=acos(-1.0);
int main()
{
int t;
cin>>t;
double x1,y1,x2,y2,x3,y3,angle,l;
while(t--)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
angle=atan2(y2-y1,x2-x1);
l=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
x3=x1+l*cos(angle+PI/3.0);
y3=y1+l*sin(angle+PI/3.0);
printf("(%.2lf,%.2lf)\n",x3,y3);
printf("%.2lf",acos(PI));
}
return 0;
}
atan2(a, b) 与 ATAN(a/b)稍有不同,atan2(a,b)的取值范围介于 -pi 到 pi 之间(不包括 -pi),
而ATAN(a/b)的取值范围介于-pi/2到pi/2之间(不包括±pi/2)。
Rescue The Princess
Time Limit: 1000MS Memory limit: 65536K
题目描述
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 marrythe 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 anequilateraltriangle
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?
输入
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 theequilateraltriangle.
And coordinates A(x1,y1) and B(x2,y2) are given by anticlockwise.
输出
For each test case, you should output the coordinate of C(x3,y3), the result should be roundedto 2 decimal places in a line.
示例输入
4 -100.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00 0.00 100.00 100.00 1.00 0.00 1.866 0.50
示例输出
(-50.00,86.60) (-86.60,50.00) (-36.60,136.60) (1.00,1.00)
提示
即将AB线段绕A点逆时针旋转60°后B点的位置用到平面几何求解
x3=x1+L*cos(60°+angle);
y3=y1+L*sin(60°+angle);
angle=atan2(y2-y1,x2-x1);
60°化成弧度
const double PI=acos(-1.0);
而PI/3.0就是60°
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double PI=acos(-1.0);
int main()
{
int t;
cin>>t;
double x1,y1,x2,y2,x3,y3,angle,l;
while(t--)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
angle=atan2(y2-y1,x2-x1);
l=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
x3=x1+l*cos(angle+PI/3.0);
y3=y1+l*sin(angle+PI/3.0);
printf("(%.2lf,%.2lf)\n",x3,y3);
printf("%.2lf",acos(PI));
}
return 0;
}
atan2(a, b) 与 ATAN(a/b)稍有不同,atan2(a,b)的取值范围介于 -pi 到 pi 之间(不包括 -pi),
而ATAN(a/b)的取值范围介于-pi/2到pi/2之间(不包括±pi/2)。
相关文章推荐
- SAP sybase培训笔记4-使用技巧&&Query Plan
- druid 配置详细
- 96. Unique Binary Search Trees
- 从频率到意义:语义向量空间模型(3)(From Frequency to Meaning: Vector Space Models of Semantics)
- 核心动画(UIView封装动画)
- request.getReader()乱码问题
- 对request.getSession(false)的理解
- Andorid学习笔记(ADT)-常见的UI布局
- [poj 1947] Rebuilding Roads 树形DP
- leetcode 303. Range Sum Query - Immutable(前缀和)
- [置顶] 开源框架GPUImage 的简单说明
- 用户设计VS用户体验(UI,UX干货)
- Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
- PHP中require和include路径问题总结
- AndroidUI之三分钟教你实现效果简单大气的Dialog提示框
- UIImage 内存细节
- UIImage 内存细节
- break,continue,break的用法与区别
- leetcode第一刷_Unique Binary Search Trees
- Android Wear SDK 中文 ---- 创建表盘服务 [Building a Watch Face Service]