Points on Cycle
程序员文章站
2022-03-29 17:52:58
...
There is a cycle with its center on the origin.
Now give you a point on the cycle, you are to find out the other two points on it, to maximize the sum of the distance between each other
you may assume that the radius of the cycle will not exceed 1000.
Input
There are T test cases, in each case there are 2 decimal number representing the coordinate of the given point.
Output
For each testcase you are supposed to output the coordinates of both of the unknow points by 3 decimal places of precision
Alway output the lower one first(with a smaller Y-coordinate value), if they have the same Y value output the one with a smaller X.
NOTE
when output, if the absolute difference between the coordinate values X1 and X2 is smaller than 0.0005, we assume they are equal.
Sample Input
2
1.500 2.000
563.585 1.251
Sample Output
0.982 -2.299 -2.482 0.299
-280.709 -488.704 -282.876 487.453
给出一个以原点为圆心的圆上的一点,问其内接等边三形另外两个点的坐标
刚开始想直接利用三角函数角度的偏移来计算,但是在c中通过反三角函数求出来的角度只能是在-90到90度之间,并不是0到360度,所以无法准确定位角在哪一个向限。所以只能通过向量a向量b,a*b=1/2*|a||b|;a*a+b*b=r*r x^2+y^2=r^2,这三个公式进行计算
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--){
double x1,y1,r;
scanf("%lf%lf",&x1,&y1);
r = x1*x1+y1*y1;
double a = 1;
double b = y1;
double c = r/4-x1*x1;
double delta = b*b-4*a*c;
double ansy1 = (-b-sqrt(delta))/2/a;
double ansy2 = (-b+sqrt(delta))/2/a;
double ansx1,ansx2;
if(fabs(x1)<=1e-7){
ansx1 = -sqrt(r-ansy1*ansy1);
ansx2 = sqrt(r-ansy2*ansy2);
}
else{
ansx1 = (-r/2-y1*ansy1)/x1;
ansx2 = (-r/2-y1*ansy2)/x1;
}
printf("%.3lf %.3lf %.3lf %.3lf\n",ansx1,ansy1,ansx2,ansy2);
}
return 0;
}
下一篇: ABP进阶教程3 - 分页排序
推荐阅读
-
学习RxJS之JavaScript框架Cycle.js
-
jQuery图片切换插件jquery.cycle.js使用示例
-
HDU 5215 Cycle(dfs判环)
-
K Closest Points to Origin 最接近原点的 K 个点(Medium)(JAVA)
-
net.sf.json.JSONException: There is a cycle in the hierarchy!
-
详解golang避免循环import问题(“import cycle not allowed”)
-
理解ADF Faces Life Cycle
-
Codeforces 851C - Five Dimensional Points - 数学 暴力
-
【26.67%】【codeforces 596C】Wilbur and Points
-
Codeforces Round #432 (Div. 2) - C - Five Dimensional Points